Ticket #9362: phoenix_non_const_cxx03.txt

File phoenix_non_const_cxx03.txt, 10.6 KB (added by Andrey Semashev, 9 years ago)

GCC 4.8.1 errors in C++03 mode.

Line 
1In file included from ./boost/phoenix/core/detail/preprocessed/function_eval.hpp:12:0,
2 from ./boost/phoenix/core/detail/function_eval.hpp:14,
3 from ./boost/phoenix/function/function.hpp:13,
4 from ./boost/phoenix/function.hpp:11,
5 from ./boost/phoenix/phoenix.hpp:12,
6 from ./boost/phoenix.hpp:11,
7 from ./phoenix_non_const.cpp:2:
8./boost/phoenix/core/detail/preprocessed/function_eval_10.hpp: In instantiation of ‘typename boost::phoenix::detail::function_eval::result<boost::phoenix::detail::function_eval(const F&, A0&, const Context&)>::type boost::phoenix::detail::function_eval::operator()(const F&, A0&, const Context&) const [with F = boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>; A0 = const boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l>; Context = boost::phoenix::vector2<boost::phoenix::vector1<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >*>&, const boost::phoenix::default_actions&>; typename boost::phoenix::detail::function_eval::result<boost::phoenix::detail::function_eval(const F&, A0&, const Context&)>::type = void]’:
9./boost/phoenix/core/detail/preprocessed/call_10.hpp:76:21: required from ‘boost::phoenix::detail::call_impl<Fun, Expr, State, Data, 2l>::result_type boost::phoenix::detail::call_impl<Fun, Expr, State, Data, 2l>::operator()(typename boost::phoenix::detail::call_impl<Fun, Expr, State, Data, 2l>::expr_param, typename boost::phoenix::detail::call_impl<Fun, Expr, State, Data, 2l>::state_param, typename boost::phoenix::detail::call_impl<Fun, Expr, State, Data, 2l>::data_param) const [with Fun = boost::phoenix::detail::function_eval; Expr = const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >&; State = boost::phoenix::vector1<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >*>&; Data = const boost::phoenix::default_actions&; boost::phoenix::detail::call_impl<Fun, Expr, State, Data, 2l>::result_type = void; typename boost::phoenix::detail::call_impl<Fun, Expr, State, Data, 2l>::expr_param = const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >&; typename boost::phoenix::detail::call_impl<Fun, Expr, State, Data, 2l>::state_param = boost::phoenix::vector1<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >*>&; typename boost::phoenix::detail::call_impl<Fun, Expr, State, Data, 2l>::data_param = const boost::phoenix::default_actions&]’
10./boost/phoenix/core/meta_grammar.hpp:74:61: required from ‘boost::phoenix::evaluator::impl<Expr, State, boost::proto::envns_::empty_env>::result_type boost::phoenix::evaluator::impl<Expr, State, boost::proto::envns_::empty_env>::operator()(typename boost::phoenix::evaluator::impl<Expr, State, boost::proto::envns_::empty_env>::expr_param, typename boost::phoenix::evaluator::impl<Expr, State, boost::proto::envns_::empty_env>::state_param, typename boost::phoenix::evaluator::impl<Expr, State, boost::proto::envns_::empty_env>::data_param) const [with Expr = const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >&; State = const boost::phoenix::vector2<boost::phoenix::vector1<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >*>&, const boost::phoenix::default_actions&>&; boost::phoenix::evaluator::impl<Expr, State, boost::proto::envns_::empty_env>::result_type = void; typename boost::phoenix::evaluator::impl<Expr, State, boost::proto::envns_::empty_env>::expr_param = const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >&; typename boost::phoenix::evaluator::impl<Expr, State, boost::proto::envns_::empty_env>::state_param = const boost::phoenix::vector2<boost::phoenix::vector1<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >*>&, const boost::phoenix::default_actions&>&; typename boost::phoenix::evaluator::impl<Expr, State, boost::proto::envns_::empty_env>::data_param = const boost::proto::envns_::empty_env&]’
11./boost/phoenix/core/meta_grammar.hpp:34:9: required from ‘typename boost::proto::detail::apply_transform<boost::phoenix::evaluator(const Expr&, const State&)>::result_type boost::phoenix::evaluator::operator()(const Expr&, const State&) const [with Expr = boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >; State = boost::phoenix::vector2<boost::phoenix::vector1<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >*>&, const boost::phoenix::default_actions&>; typename boost::proto::detail::apply_transform<boost::phoenix::evaluator(const Expr&, const State&)>::result_type = void]’
12./boost/phoenix/core/meta_grammar.hpp:139:27: required from ‘typename boost::proto::switch_<boost::phoenix::meta_grammar>::impl<const Expr&, typename boost::phoenix::result_of::env<const Context&>::type, typename boost::phoenix::result_of::actions<const Context&>::type>::result_type boost::phoenix::eval(const Expr&, const Context&) [with Expr = boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >; Context = boost::phoenix::vector2<boost::phoenix::vector1<const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l> >*>&, const boost::phoenix::default_actions&>; typename boost::proto::switch_<boost::phoenix::meta_grammar>::impl<const Expr&, typename boost::phoenix::result_of::env<const Context&>::type, typename boost::phoenix::result_of::actions<const Context&>::type>::result_type = void]’
13./boost/phoenix/core/actor.hpp:254:81: required from ‘typename boost::phoenix::result_of::actor<typename boost::mpl::eval_if_c<boost::mpl::or_<boost::phoenix::is_custom_terminal<Expr>, mpl_::bool_<boost::is_placeholder<Expr>::value> >::value, boost::proto::terminal<T>, boost::mpl::identity<T> >::type::proto_base_expr>::type boost::phoenix::actor<Expr>::operator()() const [with Expr = boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<my_func>, 0l>, boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<int&>, 0l> >, 2l>; typename boost::phoenix::result_of::actor<typename boost::mpl::eval_if_c<boost::mpl::or_<boost::phoenix::is_custom_terminal<Expr>, mpl_::bool_<boost::is_placeholder<Expr>::value> >::value, boost::proto::terminal<T>, boost::mpl::identity<T> >::type::proto_base_expr>::type = void]’
14./phoenix_non_const.cpp:19:44: required from here
15./boost/phoenix/core/detail/preprocessed/function_eval_10.hpp:85:51: error: passing ‘const my_func’ as ‘this’ argument of ‘void my_func::operator()(int&)’ discards qualifiers [-fpermissive]
16 return boost::phoenix::eval(f, ctx)(help_rvalue_deduction(boost::phoenix::eval(a0, ctx)));
17 ^