This code does not compile (gcc 5.3.1 + boost 1.60):
#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()); }
Unable to execute static statement:
error: static assertion failed: Attribute does not have the expected size.
Thanks to wandbox, I also tried to increase the level of 1.61 and clang, both give the same results.
If I delete the semantic action attached to the portal , it compiles fine; the same thing happens if I change dest to:
auto dest = x3::lit('[') >> x3::int_ >> ']';
Any help would be greatly appreciated. TIA.
c ++ boost-spirit boost-spirit-x3
dvd
source share