Ten kod nie kompiluje (gcc 5.3.1 + zwiększyć 1.60):Spirit X3, semantyczny działanie sprawia kompilacja nie powiedzie się z: Atrybut nie ma oczekiwanej wielkości
#include <boost/spirit/home/x3.hpp>
namespace x3 = boost::spirit::x3;
template <typename T>
void parse(T begin, T end) {
auto dest = x3::lit('[') >> x3::int_ >> ';' >> x3::int_ >> ']';
auto on_portal = [&](auto& ctx) {};
auto portal = (x3::char_('P') >> -dest)[on_portal];
auto tiles = +portal;
x3::phrase_parse(begin, end, tiles, x3::eol);
}
int main() {
std::string x;
parse(x.begin(), x.end());
}
To nie ze statycznym twierdzenie:
error: static assertion failed: Attribute does not have the expected size.
Dzięki wandboxowi próbowałem również zwiększyć 1.61 i klang, oba dają takie same wyniki.
Po usunięciu akcji semantycznej dołączonej do portal
kompiluje się dobrze; to samo dzieje się w przypadku zmiany dest
do:
auto dest = x3::lit('[') >> x3::int_ >> ']';
Każda pomoc będzie mile widziane. TIA.
Ten reproduktor jest doskonały. Uwielbiam, gdy ludzie zawężają problem do istoty. +10 jeśli mógłbym – sehe