Fwd: Attribute collapsing error
Kamil Witecki <[email protected]> Thu, 18 Oct 2018 15:11:12 +0200
| Newsgroups | gmane.comp.parsers.spirit.general |
|---|---|
| Message-ID | <CAK=ju-uaVbPD0Lmm2raanHBbGQx238-uvfi=RgqnOze3xOeYNQ@mail.gmail.com> |
Hello, I have encountered strange issues with X3 attribute rules. When working with alternative with unused_type and attribute Spirit cannot push attribute to optional. I am using Boost 1.65.1 (with clang) and 1.68.0 (with MSVC Express 2017 15.8.4) and its Spirit.X3 implementation. Is it an error in Spirit.X3 or I have misunderstood compound attribute rules? How to fix the grammar if the latter is true? Attached is minimal example reproducing the case, error log of MSVC and error log of clang. Uncommenting the noop semantic actions makes the example compile. Pozdrawiam, Kamil Witecki. _______________________________________________ Spirit-general mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/spirit-general
x3_bug.cpp
(text/x-c-code, 798 B)
#include <boost/fusion/adapted/std_pair.hpp>
#include <boost/spirit/home/x3.hpp>
#include <iostream>
#include <cassert>
#include <vector>
#include <string>
namespace
{
using boost::spirit::x3::rule;
using boost::spirit::x3::lit;
using boost::spirit::x3::int_;
using boost::spirit::x3::space;
using boost::spirit::x3::graph;
namespace bug
{
auto rule_ = rule<class node_, boost::optional<
boost::fusion::deque<
std::string, int
>
>
>{ "a" } =
((*graph >> int_) | lit('a')/*[([]() {})]*/);
}
}
int main()
{
char data[1];
boost::optional<boost::fusion::deque<std::string, int>> res;
boost::spirit::x3::phrase_parse(std::begin(data), std::end(data), bug::rule_, space, res);
}
clang_err.log
(application/octet-stream, 34.2 KB)
In file included from /mnt/c/home/projects/pdl_app/x3_bug.cpp:2:
In file included from /usr/include/boost/spirit/home/x3.hpp:14:
In file included from /usr/include/boost/spirit/home/x3/auxiliary.hpp:11:
In file included from /usr/include/boost/spirit/home/x3/auxiliary/any_parser.hpp:17:
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:180:9: error: no matching function for call to 'move_to'
detail::move_to(std::move(src), dest
^~~~~~~~~~~~~~~
/usr/include/boost/spirit/home/x3/char/char_parser.hpp:31:29: note: in instantiation of function template specialization 'boost::spirit::x3::traits::move_to<char &, boost::fusion::deque<std::__cxx11::basic_string<char>, int> >' requested here
x3::traits::move_to(*first, attr);
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:101:25: note: in instantiation of function template specialization 'boost::spirit::x3::char_parser<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >::parse<char *, boost::spirit::x3::context<(anonymous namespace)::bug::node_, const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type> >, boost::fusion::deque<std::__cxx11::basic_string<char>, int> >' requested here
if (!parser.parse(first, last, context, rcontext, val))
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:132:20: note: in instantiation of function template specialization 'boost::spirit::x3::detail::parse_into_container_base_impl<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >::call_synthesize_x<char *, boost::spirit::x3::context<(anonymous namespace)::bug::node_, const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return call_synthesize_x(parser, first, last, context, rcontext, attr
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:187:20: note: in instantiation of function template specialization 'boost::spirit::x3::detail::parse_into_container_base_impl<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >::call_synthesize<char *, boost::spirit::x3::context<(anonymous namespace)::bug::node_, const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return call_synthesize(parser, first, last, context, rcontext, attr);
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:196:20: note: in instantiation of function template specialization 'boost::spirit::x3::detail::parse_into_container_base_impl<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >::call_synthesize_dispatch_by_seq<char *, boost::spirit::x3::context<(anonymous namespace)::bug::node_, const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return call_synthesize_dispatch_by_seq(parser, first, last, context, rcontext, attr
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:218:20: note: (skipping 11 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
return call(parser, first, last, context, rcontext, attr
^
/usr/include/boost/spirit/home/x3/nonterminal/detail/rule.hpp:334:28: note: in instantiation of function template specialization 'boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, (anonymous namespace)::bug::node_>::parse_rhs<boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, char *, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
ok_parse = parse_rhs(rhs, first, last, context, attr_, attr_
^
/usr/include/boost/spirit/home/x3/nonterminal/rule.hpp:61:19: note: in instantiation of function template specialization 'boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, (anonymous namespace)::bug::node_>::call_rule_definition<boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, char *, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, mpl_::bool_<false> >' requested here
::call_rule_definition(
^
/usr/include/boost/spirit/home/x3/core/parse.hpp:117:31: note: in instantiation of function template specialization 'boost::spirit::x3::rule_definition<(anonymous namespace)::bug::node_, boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, false>::parse<char *, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
bool r = as_parser(p).parse(first, last, skipper_ctx, unused, attr);
^
/usr/include/boost/spirit/home/x3/core/parse.hpp:149:16: note: in instantiation of function template specialization 'boost::spirit::x3::phrase_parse_main<char *, boost::spirit::x3::rule_definition<(anonymous namespace)::bug::node_, boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, false>, boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return phrase_parse_main(first, last, p, s, attr, post_skip);
^
/mnt/c/home/projects/pdl_app/x3_bug.cpp:31:24: note: in instantiation of function template specialization 'boost::spirit::x3::phrase_parse<char *, boost::spirit::x3::rule_definition<(anonymous namespace)::bug::node_, boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, false>, boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
boost::spirit::x3::phrase_parse(std::begin(data), std::end(data), bug::rule_, space, res);
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:56:9: note: candidate function not viable: no known conversion from 'typename attribute_category<deque<basic_string<char>, int> >::type' (aka 'boost::spirit::x3::traits::tuple_attribute') to 'boost::spirit::x3::traits::unused_attribute' for 3rd argument
move_to(Source&&, Dest&, unused_attribute) {}
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:74:9: note: candidate function not viable: no known conversion from 'typename attribute_category<deque<basic_string<char>, int> >::type' (aka 'boost::spirit::x3::traits::tuple_attribute') to 'boost::spirit::x3::traits::plain_attribute' for 3rd argument
move_to(Source&& src, Dest& dest, plain_attribute)
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:86:9: note: candidate function not viable: no known conversion from 'typename attribute_category<deque<basic_string<char>, int> >::type' (aka 'boost::spirit::x3::traits::tuple_attribute') to 'boost::spirit::x3::traits::container_attribute' for 3rd argument
move_to(Source&& src, Dest& dest, container_attribute)
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:150:9: note: candidate function not viable: no known conversion from 'typename attribute_category<deque<basic_string<char>, int> >::type' (aka 'boost::spirit::x3::traits::tuple_attribute') to 'boost::spirit::x3::traits::variant_attribute' for 3rd argument
move_to(Source&& src, Dest& dest, variant_attribute tag)
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:93:13: note: candidate template ignored: disabled by 'enable_if' [with Source = char, Dest = boost::fusion::deque<std::__cxx11::basic_string<char>, int>]
mpl::and_<
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:104:13: note: candidate template ignored: disabled by 'enable_if' [with Source = char, Dest = boost::fusion::deque<std::__cxx11::basic_string<char>, int>]
is_size_one_sequence<Dest>
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:113:9: note: candidate function template not viable: requires 4 arguments, but 3 were provided
move_to(Source&& src, Dest& dest, variant_attribute, mpl::false_)
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:143:9: note: candidate function template not viable: requires 4 arguments, but 3 were provided
move_to(Source&& src, Dest& dest, variant_attribute, mpl::true_)
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:157:9: note: candidate function template not viable: requires 4 arguments, but 3 were provided
move_to(Iterator, Iterator, unused_type, unused_attribute) {}
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:161:9: note: candidate function template not viable: requires 4 arguments, but 3 were provided
move_to(Iterator first, Iterator last, Dest& dest, container_attribute)
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:171:9: note: candidate function template not viable: requires 4 arguments, but 3 were provided
move_to(Iterator first, Iterator last, boost::iterator_range<Iterator>& rng, container_attribute)
^
In file included from /mnt/c/home/projects/pdl_app/x3_bug.cpp:2:
In file included from /usr/include/boost/spirit/home/x3.hpp:14:
In file included from /usr/include/boost/spirit/home/x3/auxiliary.hpp:11:
In file included from /usr/include/boost/spirit/home/x3/auxiliary/any_parser.hpp:15:
/usr/include/boost/spirit/home/x3/support/traits/container_traits.hpp:125:15: error: no member named 'insert' in 'boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >'
c.insert(c.end(), std::move(val));
~ ^
/usr/include/boost/spirit/home/x3/support/traits/container_traits.hpp:133:48: note: in instantiation of function template specialization 'boost::spirit::x3::traits::push_back_container<boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, void>::call<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >' requested here
return push_back_container<Container>::call(c, std::move(val));
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:105:21: note: in instantiation of function template specialization 'boost::spirit::x3::traits::push_back<boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::fusion::deque<std::__cxx11::basic_string<char>, int> &>' requested here
traits::push_back(attr, val);
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:132:20: note: in instantiation of function template specialization 'boost::spirit::x3::detail::parse_into_container_base_impl<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >::call_synthesize_x<char *, boost::spirit::x3::context<(anonymous namespace)::bug::node_, const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return call_synthesize_x(parser, first, last, context, rcontext, attr
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:187:20: note: in instantiation of function template specialization 'boost::spirit::x3::detail::parse_into_container_base_impl<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >::call_synthesize<char *, boost::spirit::x3::context<(anonymous namespace)::bug::node_, const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return call_synthesize(parser, first, last, context, rcontext, attr);
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:196:20: note: in instantiation of function template specialization 'boost::spirit::x3::detail::parse_into_container_base_impl<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >::call_synthesize_dispatch_by_seq<char *, boost::spirit::x3::context<(anonymous namespace)::bug::node_, const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return call_synthesize_dispatch_by_seq(parser, first, last, context, rcontext, attr
^
/usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp:218:20: note: (skipping 11 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
return call(parser, first, last, context, rcontext, attr
^
/usr/include/boost/spirit/home/x3/nonterminal/detail/rule.hpp:334:28: note: in instantiation of function template specialization 'boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, (anonymous namespace)::bug::node_>::parse_rhs<boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, char *, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
ok_parse = parse_rhs(rhs, first, last, context, attr_, attr_
^
/usr/include/boost/spirit/home/x3/nonterminal/rule.hpp:61:19: note: in instantiation of function template specialization 'boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, (anonymous namespace)::bug::node_>::call_rule_definition<boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, char *, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, mpl_::bool_<false> >' requested here
::call_rule_definition(
^
/usr/include/boost/spirit/home/x3/core/parse.hpp:117:31: note: in instantiation of function template specialization 'boost::spirit::x3::rule_definition<(anonymous namespace)::bug::node_, boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, false>::parse<char *, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
bool r = as_parser(p).parse(first, last, skipper_ctx, unused, attr);
^
/usr/include/boost/spirit/home/x3/core/parse.hpp:149:16: note: in instantiation of function template specialization 'boost::spirit::x3::phrase_parse_main<char *, boost::spirit::x3::rule_definition<(anonymous namespace)::bug::node_, boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, false>, boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return phrase_parse_main(first, last, p, s, attr, post_skip);
^
/mnt/c/home/projects/pdl_app/x3_bug.cpp:31:24: note: in instantiation of function template specialization 'boost::spirit::x3::phrase_parse<char *, boost::spirit::x3::rule_definition<(anonymous namespace)::bug::node_, boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, false>, boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
boost::spirit::x3::phrase_parse(std::begin(data), std::end(data), bug::rule_, space, res);
^
In file included from /mnt/c/home/projects/pdl_app/x3_bug.cpp:2:
In file included from /usr/include/boost/spirit/home/x3.hpp:14:
In file included from /usr/include/boost/spirit/home/x3/auxiliary.hpp:11:
In file included from /usr/include/boost/spirit/home/x3/auxiliary/any_parser.hpp:17:
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:62:18: error: no viable overloaded '='
dest = std::move(src);
~~~~ ^ ~~~~~~~~~~~~~~
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:81:13: note: in instantiation of function template specialization 'boost::spirit::x3::traits::detail::move_to_plain<int, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
move_to_plain(std::forward<Source>(src), dest, is_single_element_sequence);
^
/usr/include/boost/spirit/home/x3/support/traits/move_to.hpp:180:17: note: in instantiation of function template specialization 'boost::spirit::x3::traits::detail::move_to<int, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
detail::move_to(std::move(src), dest
^
/usr/include/boost/spirit/home/x3/support/numeric_utils/extract_int.hpp:135:25: note: in instantiation of function template specialization 'boost::spirit::x3::traits::move_to<int &, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
traits::move_to(attr, attr_);
^
/usr/include/boost/spirit/home/x3/numeric/int.hpp:39:29: note: in instantiation of function template specialization 'boost::spirit::x3::extract_int<int, 10, 1, -1>::call<char *, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return extract::call(first, last, attr);
^
/usr/include/boost/spirit/home/x3/operator/detail/sequence.hpp:336:29: note: in instantiation of function template specialization 'boost::spirit::x3::int_parser<int, 10, 1, -1>::parse<char *, boost::spirit::x3::context<(anonymous namespace)::bug::node_, const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
&& parser.right.parse(first, last, context, rcontext, r_attr))
^
/usr/include/boost/spirit/home/x3/operator/detail/sequence.hpp:349:16: note: (skipping 7 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
return parse_sequence_plain(parser, first, last, context, rcontext, attr);
^
/usr/include/boost/spirit/home/x3/nonterminal/detail/rule.hpp:334:28: note: in instantiation of function template specialization 'boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, (anonymous namespace)::bug::node_>::parse_rhs<boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, char *, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
ok_parse = parse_rhs(rhs, first, last, context, attr_, attr_
^
/usr/include/boost/spirit/home/x3/nonterminal/rule.hpp:61:19: note: in instantiation of function template specialization 'boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, (anonymous namespace)::bug::node_>::call_rule_definition<boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, char *, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, mpl_::bool_<false> >' requested here
::call_rule_definition(
^
/usr/include/boost/spirit/home/x3/core/parse.hpp:117:31: note: in instantiation of function template specialization 'boost::spirit::x3::rule_definition<(anonymous namespace)::bug::node_, boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, false>::parse<char *, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::spirit::x3::unused_type>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
bool r = as_parser(p).parse(first, last, skipper_ctx, unused, attr);
^
/usr/include/boost/spirit/home/x3/core/parse.hpp:149:16: note: in instantiation of function template specialization 'boost::spirit::x3::phrase_parse_main<char *, boost::spirit::x3::rule_definition<(anonymous namespace)::bug::node_, boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, false>, boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
return phrase_parse_main(first, last, p, s, attr, post_skip);
^
/mnt/c/home/projects/pdl_app/x3_bug.cpp:31:24: note: in instantiation of function template specialization 'boost::spirit::x3::phrase_parse<char *, boost::spirit::x3::rule_definition<(anonymous namespace)::bug::node_, boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::graph_tag> >, boost::spirit::x3::int_parser<int, 10, 1, -1> >, boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard, boost::spirit::x3::unused_type> >, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >, false>, boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag>, boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> > >' requested here
boost::spirit::x3::phrase_parse(std::begin(data), std::end(data), bug::rule_, space, res);
^
/usr/include/boost/optional/optional.hpp:943:15: note: candidate function not viable: no known conversion from 'typename std::remove_reference<int &>::type' (aka 'int') to 'const boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >' for 1st argument
optional& operator= ( optional const& rhs )
^
/usr/include/boost/optional/optional.hpp:951:15: note: candidate function not viable: no known conversion from 'typename std::remove_reference<int &>::type' (aka 'int') to 'boost::optional<boost::fusion::deque<std::__cxx11::basic_string<char>, int> >' for 1st argument
optional& operator= ( optional && rhs )
^
/usr/include/boost/optional/optional.hpp:994:15: note: candidate function not viable: no known conversion from 'typename std::remove_reference<int &>::type' (aka 'int') to 'boost::none_t' for 1st argument
optional& operator= ( none_t none_ ) BOOST_NOEXCEPT
^
/usr/include/boost/optional/optional.hpp:901:45: note: candidate template ignored: disabled by 'enable_if' [with Expr = int]
BOOST_DEDUCED_TYPENAME boost::enable_if<optional_detail::is_optional_val_init_candidate<T, Expr>, optional&>::type
^
/usr/include/boost/optional/optional.hpp:922:15: note: candidate template ignored: could not match 'optional<type-parameter-0-0>' against 'int'
optional& operator= ( optional<U> const& rhs )
^
/usr/include/boost/optional/optional.hpp:933:15: note: candidate template ignored: could not match 'optional<type-parameter-0-0>' against 'int'
optional& operator= ( optional<U> && rhs )
^
/usr/include/boost/optional/optional.hpp:963:45: note: candidate template ignored: disabled by 'enable_if' [with T_ = int]
BOOST_DEDUCED_TYPENAME boost::enable_if<boost::is_same<T, BOOST_DEDUCED_TYPENAME boost::decay<T_>::type>, optional&>::type
^
3 errors generated.
make[3]: *** [CMakeFiles/x3_bug.dir/x3_bug.cpp.o] Error 1
make[2]: *** [CMakeFiles/x3_bug.dir/all] Error 2
make[1]: *** [CMakeFiles/x3_bug.dir/rule] Error 2
make: *** [x3_bug] Error 2
msvc_err.log
(application/octet-stream, 28.4 KB)
x3_bug.cpp
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/support/traits/move_to.hpp(158): error C2679: binary '=': no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
c:\home\lib\boost_1_68_0\boost/optional/optional.hpp(1088): note: could be 'boost::optional<boost::fusion::deque<std::string,int>> &boost::optional<boost::fusion::deque<std::string,int>>::operator =(boost::none_t) noexcept'
c:\home\lib\boost_1_68_0\boost/optional/optional.hpp(1041): note: or 'boost::optional<boost::fusion::deque<std::string,int>> &boost::optional<boost::fusion::deque<std::string,int>>::operator =(boost::optional<boost::fusion::deque<std::string,int>> &&) noexcept(false)'
c:\home\lib\boost_1_68_0\boost/optional/optional.hpp(1029): note: or 'boost::optional<boost::fusion::deque<std::string,int>> &boost::optional<boost::fusion::deque<std::string,int>>::operator =(const boost::optional<boost::fusion::deque<std::string,int>> &)'
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/support/traits/move_to.hpp(158): note: while trying to match the argument list '(Dest, int)'
with
[
Dest=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/support/traits/move_to.hpp(196): note: see reference to function template instantiation 'void boost::spirit::x3::traits::detail::move_to<int,Dest>(Source &&,Dest &,boost::spirit::x3::traits::optional_attribute)' being compiled
with
[
Dest=boost::optional<boost::fusion::deque<std::string,int>>,
Source=int
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/support/numeric_utils/extract_int.hpp(134): note: see reference to function template instantiation 'void boost::spirit::x3::traits::move_to<T&,Attribute>(Source,Dest &)' being compiled
with
[
T=int,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>,
Source=int &,
Dest=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/numeric/int.hpp(39): note: see reference to function template instantiation 'bool boost::spirit::x3::extract_int<T,10,1,-1>::call<Iterator,Attribute>(Iterator &,const Iterator &,Attribute &)' being compiled
with
[
T=int,
Iterator=char *,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/numeric/int.hpp(39): note: see reference to function template instantiation 'bool boost::spirit::x3::extract_int<T,10,1,-1>::call<Iterator,Attribute>(Iterator &,const Iterator &,Attribute &)' being compiled
with
[
T=int,
Iterator=char *,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/operator/detail/sequence.hpp(346): note: see reference to function template instantiation 'bool boost::spirit::x3::int_parser<int,10,1,-1>::parse<Iterator,Context,ActualAttribute>(Iterator &,const Iterator &,const Context &,boost::spirit::x3::unused_type,Attribute &) const' being compiled
with
[
Iterator=char *,
Context=boost::spirit::x3::context<`anonymous-namespace'::bug::node_,const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/operator/detail/sequence.hpp(345): note: see reference to function template instantiation 'bool boost::spirit::x3::int_parser<int,10,1,-1>::parse<Iterator,Context,ActualAttribute>(Iterator &,const Iterator &,const Context &,boost::spirit::x3::unused_type,Attribute &) const' being compiled
with
[
Iterator=char *,
Context=boost::spirit::x3::context<`anonymous-namespace'::bug::node_,const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/operator/detail/sequence.hpp(379): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::parse_sequence_plain<Parser,Iterator,Context,RContext,Attribute>(const Parser &,Iterator &,const Iterator &,const Context &,RContext &,Attribute &)' being compiled
with
[
Parser=boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,
Iterator=char *,
Context=boost::spirit::x3::context<`anonymous-namespace'::bug::node_,const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/operator/sequence.hpp(45): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::parse_sequence<boost::spirit::x3::sequence<Derived,boost::spirit::x3::int_parser<int,10,1,-1>>,Iterator,Context,RContext,Attribute>(const Parser &,Iterator &,const Iterator &,const Context &,RContext &,Attribute &,boost::spirit::x3::traits::optional_attribute)' being compiled
with
[
Derived=boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,
Iterator=char *,
Context=boost::spirit::x3::context<`anonymous-namespace'::bug::node_,const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>,
Parser=boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/operator/detail/alternative.hpp(250): note: see reference to function template instantiation 'bool boost::spirit::x3::sequence<Derived,boost::spirit::x3::int_parser<int,10,1,-1>>::parse<Iterator,Context,RContext,Attribute>(Iterator &,const Iterator &,const Context &,RContext &,Attribute &) const' being compiled
with
[
Derived=boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,
Iterator=char *,
Context=boost::spirit::x3::context<`anonymous-namespace'::bug::node_,const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/operator/detail/alternative.hpp(250): note: see reference to function template instantiation 'bool boost::spirit::x3::sequence<Derived,boost::spirit::x3::int_parser<int,10,1,-1>>::parse<Iterator,Context,RContext,Attribute>(Iterator &,const Iterator &,const Context &,RContext &,Attribute &) const' being compiled
with
[
Derived=boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,
Iterator=char *,
Context=boost::spirit::x3::context<`anonymous-namespace'::bug::node_,const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/operator/alternative.hpp(39): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::parse_alternative<Left,Iterator,Context,RContext,Attribute>(const Parser &,Iterator &,const Iterator &,const Context &,RContext &,Attribute &)' being compiled
with
[
Left=boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,
Iterator=char *,
Context=boost::spirit::x3::context<`anonymous-namespace'::bug::node_,const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>,
Parser=boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/detail/rule.hpp(213): note: see reference to function template instantiation 'bool boost::spirit::x3::alternative<Derived,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>::parse<Iterator,boost::spirit::x3::context<ID,T,Next>,RContext,ActualAttribute>(Iterator &,const Iterator &,const Context &,RContext &,Attribute &) const' being compiled
with
[
Derived=boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,
Iterator=char *,
ID=`anonymous-namespace'::bug::node_,
T=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Next=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>,
Context=boost::spirit::x3::context<`anonymous-namespace'::bug::node_,const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/detail/rule.hpp(207): note: see reference to function template instantiation 'bool boost::spirit::x3::alternative<Derived,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>::parse<Iterator,boost::spirit::x3::context<ID,T,Next>,RContext,ActualAttribute>(Iterator &,const Iterator &,const Context &,RContext &,Attribute &) const' being compiled
with
[
Derived=boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,
Iterator=char *,
ID=`anonymous-namespace'::bug::node_,
T=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Next=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>,
Context=boost::spirit::x3::context<`anonymous-namespace'::bug::node_,const boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/detail/rule.hpp(270): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::string,int>>,ID>::parse_rhs_main<RHS,Iterator,Context,RContext,ActualAttribute>(const RHS &,Iterator &,const Iterator &,const Context &,RContext &,ActualAttribute &,boost::mpl::false_)' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
RHS=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/detail/rule.hpp(267): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::string,int>>,ID>::parse_rhs_main<RHS,Iterator,Context,RContext,ActualAttribute>(const RHS &,Iterator &,const Iterator &,const Context &,RContext &,ActualAttribute &,boost::mpl::false_)' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
RHS=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/detail/rule.hpp(281): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::string,int>>,ID>::parse_rhs_main<RHS,Iterator,Context,RContext,ActualAttribute>(const RHS &,Iterator &,const Iterator &,const Context &,RContext &,ActualAttribute &)' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
RHS=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/detail/rule.hpp(281): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::string,int>>,ID>::parse_rhs_main<RHS,Iterator,Context,RContext,ActualAttribute>(const RHS &,Iterator &,const Iterator &,const Context &,RContext &,ActualAttribute &)' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
RHS=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/detail/rule.hpp(340): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::string,int>>,ID>::parse_rhs<RHS,Iterator,Context,Attribute,Attribute>(const RHS &,Iterator &,const Iterator &,const Context &,RContext &,ActualAttribute &,boost::mpl::false_)' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
RHS=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/detail/rule.hpp(334): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::string,int>>,ID>::parse_rhs<RHS,Iterator,Context,Attribute,Attribute>(const RHS &,Iterator &,const Iterator &,const Context &,RContext &,ActualAttribute &,boost::mpl::false_)' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
RHS=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>,
RContext=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/rule.hpp(65): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::string,int>>,ID>::call_rule_definition<RHS,Iterator,Context,Attribute_,boost::mpl::bool_<false>>(const RHS &,const char *,Iterator &,const Iterator &,const Context &,ActualAttribute &,ExplicitAttrPropagation)' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
RHS=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
Attribute_=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>,
ExplicitAttrPropagation=boost::mpl::bool_<false>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/nonterminal/rule.hpp(60): note: see reference to function template instantiation 'bool boost::spirit::x3::detail::rule_parser<boost::optional<boost::fusion::deque<std::string,int>>,ID>::call_rule_definition<RHS,Iterator,Context,Attribute_,boost::mpl::bool_<false>>(const RHS &,const char *,Iterator &,const Iterator &,const Context &,ActualAttribute &,ExplicitAttrPropagation)' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
RHS=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
Attribute_=boost::optional<boost::fusion::deque<std::string,int>>,
ActualAttribute=boost::optional<boost::fusion::deque<std::string,int>>,
ExplicitAttrPropagation=boost::mpl::bool_<false>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/core/parse.hpp(119): note: see reference to function template instantiation 'bool boost::spirit::x3::rule_definition<ID,Derived,Attribute,false>::parse<Iterator,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard,boost::spirit::x3::space_tag>,boost::spirit::x3::unused_type>,Attribute>(Iterator &,const Iterator &,const Context &,boost::spirit::x3::unused_type,Attribute_ &) const' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
Derived=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
Attribute_=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/core/parse.hpp(119): note: see reference to function template instantiation 'bool boost::spirit::x3::rule_definition<ID,Derived,Attribute,false>::parse<Iterator,boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::char_class<boost::spirit::char_encoding::standard,boost::spirit::x3::space_tag>,boost::spirit::x3::unused_type>,Attribute>(Iterator &,const Iterator &,const Context &,boost::spirit::x3::unused_type,Attribute_ &) const' being compiled
with
[
ID=`anonymous-namespace'::bug::node_,
Derived=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>,
Iterator=char *,
Context=boost::spirit::x3::context<boost::spirit::x3::skipper_tag,const boost::spirit::x3::standard::space_type,boost::spirit::x3::unused_type>,
Attribute_=boost::optional<boost::fusion::deque<std::string,int>>
]
c:\home\lib\boost_1_68_0\boost/spirit/home/x3/core/parse.hpp(151): note: see reference to function template instantiation 'bool boost::spirit::x3::phrase_parse_main<Iterator,Parser,Skipper,Attribute>(Iterator &,Iterator,const Parser &,const Skipper &,Attribute &,boost::spirit::x3::skip_flag)' being compiled
with
[
Iterator=char *,
Parser=boost::spirit::x3::rule_definition<`anonymous-namespace'::bug::node_,boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::optional<boost::fusion::deque<std::string,int>>,false>,
Skipper=boost::spirit::x3::standard::space_type,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>
]
x3_bug.cpp(31): note: see reference to function template instantiation 'bool boost::spirit::x3::phrase_parse<_Ty*,boost::spirit::x3::rule_definition<ID,Derived,Attribute,false>,boost::spirit::x3::standard::space_type,boost::optional<boost::fusion::deque<std::string,int>>>(const Iterator &,Iterator,const Parser &,const Skipper &,Attribute &,boost::spirit::x3::skip_flag)' being compiled
with
[
_Ty=char,
ID=`anonymous-namespace'::bug::node_,
Derived=boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,
Attribute=boost::optional<boost::fusion::deque<std::string,int>>,
Iterator=char *,
Parser=boost::spirit::x3::rule_definition<`anonymous-namespace'::bug::node_,boost::spirit::x3::alternative<boost::spirit::x3::sequence<boost::spirit::x3::kleene<boost::spirit::x3::standard::graph_type>,boost::spirit::x3::int_type>,boost::spirit::x3::literal_char<boost::spirit::char_encoding::standard,boost::spirit::x3::unused_type>>,boost::optional<boost::fusion::deque<std::string,int>>,false>,
Skipper=boost::spirit::x3::standard::space_type
]