Skip to content

Instantly share code, notes, and snippets.

@ghaskins
Created October 2, 2015 02:48
Show Gist options
  • Save ghaskins/5e4c8eed37a2c87631de to your computer and use it in GitHub Desktop.
Save ghaskins/5e4c8eed37a2c87631de to your computer and use it in GitHub Desktop.
ghaskins@ubuntu:~/sandbox/git/spirit$ g++ -g -O0 -std=c++11 -o spirittest main.cc
In file included from /usr/include/boost/spirit/home/qi/auxiliary/attr.hpp:18:0,
from /usr/include/boost/spirit/home/qi/auxiliary.hpp:19,
from /usr/include/boost/spirit/home/qi.hpp:16,
from /usr/include/boost/spirit/include/qi.hpp:16,
from main.cc:8:
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp: In instantiation of ‘static void boost::spirit::traits::assign_to_attribute_from_value<Attribute, T, Enable>::call(const T_&, Attribute&, mpl_::false_) [with T_ = unsigned int; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>; T = unsigned int; Enable = void; mpl_::false_ = mpl_::bool_<false>]’:
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:170:54: required from ‘static void boost::spirit::traits::assign_to_attribute_from_value<Attribute, T, Enable>::call(const T&, Attribute&) [with Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>; T = unsigned int; Enable = void]’
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:359:73: required from ‘void boost::spirit::traits::detail::assign_to(const T&, Attribute&, mpl_::false_) [with T = unsigned int; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>; mpl_::false_ = mpl_::bool_<false>]’
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:382:64: required from ‘void boost::spirit::traits::assign_to(const T&, Attribute&) [with T = unsigned int; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>]’
/usr/include/boost/spirit/home/qi/numeric/numeric_utils.hpp:87:52: required from ‘static bool boost::spirit::qi::extract_uint<T, Radix, MinDigits, MaxDigits, Accumulate>::call(Iterator&, const Iterator&, Attribute&) [with Iterator = boost::spirit::basic_istream_iterator<char>; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>; T = unsigned int; unsigned int Radix = 10u; unsigned int MinDigits = 1u; int MaxDigits = -1; bool Accumulate = false]’
/usr/include/boost/spirit/home/qi/numeric/uint.hpp:242:52: required from ‘bool boost::spirit::qi::any_uint_parser<T, Radix, MinDigits, MaxDigits>::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = boost::spirit::basic_istream_iterator<char>; Context = boost::spirit::context<boost::fusion::cons<Ast::Foo&, boost::fusion::nil_>, boost::fusion::vector0<> >; Skipper = boost::spirit::unused_type; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>; T = unsigned int; unsigned int Radix = 10u; unsigned int MinDigits = 1u; int MaxDigits = -1]’
/usr/include/boost/spirit/home/qi/detail/fail_function.hpp:38:20: [ skipping 10 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/boost/function/function_template.hpp:1077:16: required from ‘boost::function<R(T0, T1, T2, T3)>::function(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::nil_> > > > >, mpl_::bool_<false> >; R = bool; T0 = boost::spirit::basic_istream_iterator<char>&; T1 = const boost::spirit::basic_istream_iterator<char>&; T2 = boost::spirit::context<boost::fusion::cons<Ast::Foo&, boost::fusion::nil_>, boost::fusion::vector0<> >&; T3 = const boost::spirit::unused_type&; typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type = int]’
/usr/include/boost/function/function_template.hpp:1132:5: required from ‘typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, boost::function<R(T0, T1, T2, T3)>&>::type boost::function<R(T0, T1, T2, T3)>::operator=(Functor) [with Functor = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::nil_> > > > >, mpl_::bool_<false> >; R = bool; T0 = boost::spirit::basic_istream_iterator<char>&; T1 = const boost::spirit::basic_istream_iterator<char>&; T2 = boost::spirit::context<boost::fusion::cons<Ast::Foo&, boost::fusion::nil_>, boost::fusion::vector0<> >&; T3 = const boost::spirit::unused_type&; typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, boost::function<R(T0, T1, T2, T3)>&>::type = boost::function<bool(boost::spirit::basic_istream_iterator<char>&, const boost::spirit::basic_istream_iterator<char>&, boost::spirit::context<boost::fusion::cons<Ast::Foo&, boost::fusion::nil_>, boost::fusion::vector0<> >&, const boost::spirit::unused_type&)>&]’
/usr/include/boost/spirit/home/qi/nonterminal/rule.hpp:183:19: required from ‘static void boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>::define(boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>&, const Expr&, mpl_::true_) [with Auto = mpl_::bool_<false>; Expr = boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::uint_>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector1<char> > >, 0l>&>, 2l>&, const boost::spirit::terminal<boost::spirit::tag::uint_>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::eol>, 0l>&>, 2l>; Iterator = boost::spirit::basic_istream_iterator<char>; T1 = Ast::Foo(); T2 = boost::spirit::unused_type; T3 = boost::spirit::unused_type; T4 = boost::spirit::unused_type; mpl_::true_ = mpl_::bool_<true>]’
/usr/include/boost/spirit/home/qi/nonterminal/rule.hpp:221:19: required from ‘boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>& boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>::operator=(const Expr&) [with Expr = boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::uint_>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector1<char> > >, 0l>&>, 2l>&, const boost::spirit::terminal<boost::spirit::tag::uint_>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::eol>, 0l>&>, 2l>; Iterator = boost::spirit::basic_istream_iterator<char>; T1 = Ast::Foo(); T2 = boost::spirit::unused_type; T3 = boost::spirit::unused_type; T4 = boost::spirit::unused_type]’
main.cc:58:13: required from ‘foo_grammar<Iterator>::foo_grammar() [with Iterator = boost::spirit::basic_istream_iterator<char>]’
main.cc:82:19: required from here
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:152:18: error: no matching function for call to ‘boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>::adt_attribute_proxy(const unsigned int&)’
attr = static_cast<Attribute>(val);
^
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:152:18: note: candidates are:
In file included from /usr/include/boost/fusion/adapted/adt/adapt_adt.hpp:39:0,
from /usr/include/boost/fusion/include/adapt_adt.hpp:12,
from main.cc:14:
main.cc:43:1: note: constexpr boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>::adt_attribute_proxy(Ast::Foo&)
BOOST_FUSION_ADAPT_ADT(
^
main.cc:43:1: note: no known conversion for argument 1 from ‘const unsigned int’ to ‘Ast::Foo&’
main.cc:43:1: note: constexpr boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>::adt_attribute_proxy(const boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>&)
BOOST_FUSION_ADAPT_ADT(
^
main.cc:43:1: note: no known conversion for argument 1 from ‘const unsigned int’ to ‘const boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>&’
main.cc:43:1: note: constexpr boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>::adt_attribute_proxy(boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>&&)
main.cc:43:1: note: no known conversion for argument 1 from ‘const unsigned int’ to ‘boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 0, false>&&’
In file included from /usr/include/boost/spirit/home/qi/auxiliary/attr.hpp:18:0,
from /usr/include/boost/spirit/home/qi/auxiliary.hpp:19,
from /usr/include/boost/spirit/home/qi.hpp:16,
from /usr/include/boost/spirit/include/qi.hpp:16,
from main.cc:8:
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp: In instantiation of ‘static void boost::spirit::traits::assign_to_attribute_from_value<Attribute, T, Enable>::call(const T_&, Attribute&, mpl_::false_) [with T_ = unsigned int; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>; T = unsigned int; Enable = void; mpl_::false_ = mpl_::bool_<false>]’:
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:170:54: required from ‘static void boost::spirit::traits::assign_to_attribute_from_value<Attribute, T, Enable>::call(const T&, Attribute&) [with Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>; T = unsigned int; Enable = void]’
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:359:73: required from ‘void boost::spirit::traits::detail::assign_to(const T&, Attribute&, mpl_::false_) [with T = unsigned int; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>; mpl_::false_ = mpl_::bool_<false>]’
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:382:64: required from ‘void boost::spirit::traits::assign_to(const T&, Attribute&) [with T = unsigned int; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>]’
/usr/include/boost/spirit/home/qi/numeric/numeric_utils.hpp:87:52: required from ‘static bool boost::spirit::qi::extract_uint<T, Radix, MinDigits, MaxDigits, Accumulate>::call(Iterator&, const Iterator&, Attribute&) [with Iterator = boost::spirit::basic_istream_iterator<char>; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>; T = unsigned int; unsigned int Radix = 10u; unsigned int MinDigits = 1u; int MaxDigits = -1; bool Accumulate = false]’
/usr/include/boost/spirit/home/qi/numeric/uint.hpp:242:52: required from ‘bool boost::spirit::qi::any_uint_parser<T, Radix, MinDigits, MaxDigits>::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = boost::spirit::basic_istream_iterator<char>; Context = boost::spirit::context<boost::fusion::cons<Ast::Foo&, boost::fusion::nil_>, boost::fusion::vector0<> >; Skipper = boost::spirit::unused_type; Attribute = boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>; T = unsigned int; unsigned int Radix = 10u; unsigned int MinDigits = 1u; int MaxDigits = -1]’
/usr/include/boost/spirit/home/qi/detail/fail_function.hpp:38:20: [ skipping 11 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/boost/function/function_template.hpp:728:7: required from ‘boost::function4<R, T1, T2, T3, T4>::function4(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::nil_> > > > >, mpl_::bool_<false> >; R = bool; T0 = boost::spirit::basic_istream_iterator<char>&; T1 = const boost::spirit::basic_istream_iterator<char>&; T2 = boost::spirit::context<boost::fusion::cons<Ast::Foo&, boost::fusion::nil_>, boost::fusion::vector0<> >&; T3 = const boost::spirit::unused_type&; typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type = int]’
/usr/include/boost/function/function_template.hpp:1077:16: required from ‘boost::function<R(T0, T1, T2, T3)>::function(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::nil_> > > > >, mpl_::bool_<false> >; R = bool; T0 = boost::spirit::basic_istream_iterator<char>&; T1 = const boost::spirit::basic_istream_iterator<char>&; T2 = boost::spirit::context<boost::fusion::cons<Ast::Foo&, boost::fusion::nil_>, boost::fusion::vector0<> >&; T3 = const boost::spirit::unused_type&; typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type = int]’
/usr/include/boost/function/function_template.hpp:1132:5: required from ‘typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, boost::function<R(T0, T1, T2, T3)>&>::type boost::function<R(T0, T1, T2, T3)>::operator=(Functor) [with Functor = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::any_uint_parser<unsigned int, 10u, 1u, -1>, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::nil_> > > > >, mpl_::bool_<false> >; R = bool; T0 = boost::spirit::basic_istream_iterator<char>&; T1 = const boost::spirit::basic_istream_iterator<char>&; T2 = boost::spirit::context<boost::fusion::cons<Ast::Foo&, boost::fusion::nil_>, boost::fusion::vector0<> >&; T3 = const boost::spirit::unused_type&; typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, boost::function<R(T0, T1, T2, T3)>&>::type = boost::function<bool(boost::spirit::basic_istream_iterator<char>&, const boost::spirit::basic_istream_iterator<char>&, boost::spirit::context<boost::fusion::cons<Ast::Foo&, boost::fusion::nil_>, boost::fusion::vector0<> >&, const boost::spirit::unused_type&)>&]’
/usr/include/boost/spirit/home/qi/nonterminal/rule.hpp:183:19: required from ‘static void boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>::define(boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>&, const Expr&, mpl_::true_) [with Auto = mpl_::bool_<false>; Expr = boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::uint_>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector1<char> > >, 0l>&>, 2l>&, const boost::spirit::terminal<boost::spirit::tag::uint_>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::eol>, 0l>&>, 2l>; Iterator = boost::spirit::basic_istream_iterator<char>; T1 = Ast::Foo(); T2 = boost::spirit::unused_type; T3 = boost::spirit::unused_type; T4 = boost::spirit::unused_type; mpl_::true_ = mpl_::bool_<true>]’
/usr/include/boost/spirit/home/qi/nonterminal/rule.hpp:221:19: required from ‘boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>& boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>::operator=(const Expr&) [with Expr = boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::uint_>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector1<char> > >, 0l>&>, 2l>&, const boost::spirit::terminal<boost::spirit::tag::uint_>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::eol>, 0l>&>, 2l>; Iterator = boost::spirit::basic_istream_iterator<char>; T1 = Ast::Foo(); T2 = boost::spirit::unused_type; T3 = boost::spirit::unused_type; T4 = boost::spirit::unused_type]’
main.cc:58:13: required from ‘foo_grammar<Iterator>::foo_grammar() [with Iterator = boost::spirit::basic_istream_iterator<char>]’
main.cc:82:19: required from here
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:152:18: error: no matching function for call to ‘boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>::adt_attribute_proxy(const unsigned int&)’
attr = static_cast<Attribute>(val);
^
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:152:18: note: candidates are:
In file included from /usr/include/boost/fusion/adapted/adt/adapt_adt.hpp:39:0,
from /usr/include/boost/fusion/include/adapt_adt.hpp:12,
from main.cc:14:
main.cc:43:1: note: constexpr boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>::adt_attribute_proxy(Ast::Foo&)
BOOST_FUSION_ADAPT_ADT(
^
main.cc:43:1: note: no known conversion for argument 1 from ‘const unsigned int’ to ‘Ast::Foo&’
main.cc:43:1: note: constexpr boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>::adt_attribute_proxy(const boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>&)
BOOST_FUSION_ADAPT_ADT(
^
main.cc:43:1: note: no known conversion for argument 1 from ‘const unsigned int’ to ‘const boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>&’
main.cc:43:1: note: constexpr boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>::adt_attribute_proxy(boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>&&)
main.cc:43:1: note: no known conversion for argument 1 from ‘const unsigned int’ to ‘boost::fusion::extension::adt_attribute_proxy<Ast::Foo, 1, false>&&’
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment