Boost logo

Boost Users :

Subject: Re: [Boost-users] [Proto] Nested Types in Transforms
From: Hossein Haeri (powerprogman_at_[hidden])
Date: 2011-02-16 10:23:20


Hi Eric,

> When you access a member of a class template, it causes the template to
> be instantiated. CanBeCalled cannot legally be instantiated with two
> function types. Hence the error.

Function types? Are you really speaking of types of ordinary C++ functions? If so, I have to say that, by coincidence, I had not passed any function types at all. Or, am I missing anything here?

> Also, proto::if_ takes as it's template parameter a Transform. It should
> be a transform that evaluates to a compile-time Boolean.

So, this problem can simply be solved by replacing the '::type' part in my code with '()' in CanBeCalled<...>() even despite the fact that I never designed my CanBeCalled<> to be a transform?

> You can easily solve both problems by making the parameter to if_ an
> ObjectTransform, as follows:
<snip>

Unfortunately, this didn't quite help. Despite the fact that EmtnShiftFObjGram itself does compile, GCC 4.5.1 (under MinGW32, WinXP, SP3) fails to compile all the code I like. Here are my test cases, where the line annotated with *** doesn't compile. The error message I get can be found in the PS:

struct Plus1
{
  double operator () (double d) const {return d + 1;}
};

struct Plus2
{
  double operator () (double d1, double d2) const {return d1 + d2;}
};

double plus1(double d) {return d + 1;}
double plus2(double d1, double d2) {return d1 + d2;}

int main()
{
  EW1<InpPool, GameState, AmmoMsg>() >> &plus1;
  EW1<InpPool, GameState, AmmoMsg>() >> Plus1();

  (EW1<InpPool, GameState, AmmoMsg>() ||
   EW1<InpPool, GameState, AmmoMsg>()) >> Plus2();//***
  
  (EW1<InpPool, GameState, AmmoMsg>() ||
   EW1<InpPool, GameState, AmmoMsg>()) >> &plus2;

  return 0;
}

Any idea now?

TIA,
--Hossein

P.S.

In file included from boost_1_42_0/boost/proto/core.hpp:22:0,
                 from boost_1_42_0/boost/proto/proto.hpp:12,
                 from EmtnGram.hpp:4,
                 from main.cpp:5:
boost_1_42_0/boost/proto/matches.hpp: In instantiation of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>), EmtnTermOrGram(boost::proto::_child_c<0>)>()> >':

boost_1_42_0/boost/proto/matches.hpp:935:13: instantiated from 'boost::proto::detail::and_2<true, boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>), EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >'

boost_1_42_0/boost/proto/matches.hpp:994:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::and_<boost::proto::op::shift_right<EmtnTermOrGram, boost::proto::op::terminal<boost::proto::wildcardns_::_> >, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>),
 EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >'

boost_1_42_0/boost/proto/matches.hpp:960:13: instantiated from 'boost::proto::detail::or_2<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_3<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>,
 boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_4<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::or_<boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> > >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::or_<EmtnTermOrGram, EmtnShiftFObjGram> >'

boost_1_42_0/boost/proto/matches.hpp:505:13: instantiated from 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, EmotionGram>'

boost_1_42_0/boost/proto/operators.hpp:77:9: instantiated from 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >'

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/matches.hpp:391:13: error: invalid use of incomplete type 'struct boost::proto::detail::uncvref<arity_caller::CanBeCalled<Plus2, mpl_::integral_c<int, 2> > >::type'
Arity.hpp:76:9: error: declaration of 'struct boost::proto::detail::uncvref<arity_caller::CanBeCalled<Plus2, mpl_::integral_c<int, 2> > >::type'
In file included from boost_1_42_0/boost/preprocessor/iteration/detail/iter/forward1.hpp:57:0,
                 from boost_1_42_0/boost/proto/matches.hpp:367,
                 from boost_1_42_0/boost/proto/core.hpp:22,
                 from boost_1_42_0/boost/proto/proto.hpp:12,
                 from EmtnGram.hpp:4,
                 from main.cpp:5:

boost_1_42_0/boost/proto/matches.hpp: In instantiation of 'boost::proto::detail::and_2<true, boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>), EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >':

boost_1_42_0/boost/proto/matches.hpp:994:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::and_<boost::proto::op::shift_right<EmtnTermOrGram, boost::proto::op::terminal<boost::proto::wildcardns_::_> >, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>),
 EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >'

boost_1_42_0/boost/proto/matches.hpp:960:13: instantiated from 'boost::proto::detail::or_2<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_3<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>,
 boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_4<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::or_<boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> > >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::or_<EmtnTermOrGram, EmtnShiftFObjGram> >'

boost_1_42_0/boost/proto/matches.hpp:505:13: instantiated from 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, EmotionGram>'

boost_1_42_0/boost/proto/operators.hpp:77:9: instantiated from 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >'

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/matches.hpp:935:13: error: 'value' is not a member of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>), EmtnTermOrGram(boost::proto::_child_c<0>)>()> >'

boost_1_42_0/boost/proto/matches.hpp: In instantiation of 'boost::proto::detail::or_2<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >':

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_3<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>,
 boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_4<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::or_<boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> > >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::or_<EmtnTermOrGram, EmtnShiftFObjGram> >'

boost_1_42_0/boost/proto/matches.hpp:505:13: instantiated from 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, EmotionGram>'

boost_1_42_0/boost/proto/operators.hpp:77:9: instantiated from 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >'

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/matches.hpp:960:13: error: 'value' is not a member of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::and_<boost::proto::op::shift_right<EmtnTermOrGram, boost::proto::op::terminal<boost::proto::wildcardns_::_> >, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>),
 EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >'

boost_1_42_0/boost/proto/matches.hpp: In instantiation of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::or_<EmtnTermOrGram, EmtnShiftFObjGram> >':

boost_1_42_0/boost/proto/matches.hpp:505:13: instantiated from 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, EmotionGram>'

boost_1_42_0/boost/proto/operators.hpp:77:9: instantiated from 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >'

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/matches.hpp:985:13: error: 'value' is not a member of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, boost::proto::control::or_<boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> > >'

In file included from boost_1_42_0/boost/proto/core.hpp:26:0,
                 from boost_1_42_0/boost/proto/proto.hpp:12,
                 from EmtnGram.hpp:4,
                 from main.cpp:5:
boost_1_42_0/boost/proto/operators.hpp: In instantiation of 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >':

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/operators.hpp:77:9: error: 'value' is not a member of 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<Plus2&>, 0l> >, 2l>, EmotionGram>'

In file included from boost_1_42_0/boost/proto/core.hpp:22:0,
                 from boost_1_42_0/boost/proto/proto.hpp:12,
                 from EmtnGram.hpp:4,
                 from main.cpp:5:

boost_1_42_0/boost/proto/matches.hpp: In instantiation of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>), EmtnTermOrGram(boost::proto::_child_c<0>)>()> >':

boost_1_42_0/boost/proto/matches.hpp:935:13: instantiated from 'boost::proto::detail::and_2<true, boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>), EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >'

boost_1_42_0/boost/proto/matches.hpp:994:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::and_<boost::proto::op::shift_right<EmtnTermOrGram, boost::proto::op::terminal<boost::proto::wildcardns_::_> >, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>),
 EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >'

boost_1_42_0/boost/proto/matches.hpp:960:13: instantiated from 'boost::proto::detail::or_2<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_3<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>,
 boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_4<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::or_<boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> > >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::or_<EmtnTermOrGram, EmtnShiftFObjGram> >'

boost_1_42_0/boost/proto/matches.hpp:505:13: instantiated from 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, EmotionGram>'

boost_1_42_0/boost/proto/operators.hpp:77:9: instantiated from 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >'

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/matches.hpp:391:13: error: invalid use of incomplete type 'struct boost::proto::detail::uncvref<arity_caller::CanBeCalled<Plus2, mpl_::integral_c<int, 2> > >::type'

Arity.hpp:76:9: error: declaration of 'struct boost::proto::detail::uncvref<arity_caller::CanBeCalled<Plus2, mpl_::integral_c<int, 2> > >::type'
In file included from boost_1_42_0/boost/preprocessor/iteration/detail/iter/forward1.hpp:57:0,
                 from boost_1_42_0/boost/proto/matches.hpp:367,
                 from boost_1_42_0/boost/proto/core.hpp:22,
                 from boost_1_42_0/boost/proto/proto.hpp:12,
                 from EmtnGram.hpp:4,
                 from main.cpp:5:

boost_1_42_0/boost/proto/matches.hpp: In instantiation of 'boost::proto::detail::and_2<true, boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>), EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >':

boost_1_42_0/boost/proto/matches.hpp:994:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::and_<boost::proto::op::shift_right<EmtnTermOrGram, boost::proto::op::terminal<boost::proto::wildcardns_::_> >, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>),
 EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >'

boost_1_42_0/boost/proto/matches.hpp:960:13: instantiated from 'boost::proto::detail::or_2<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_3<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>,
 boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_4<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::or_<boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> > >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::or_<EmtnTermOrGram, EmtnShiftFObjGram> >'

boost_1_42_0/boost/proto/matches.hpp:505:13: instantiated from 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, EmotionGram>'

boost_1_42_0/boost/proto/operators.hpp:77:9: instantiated from 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >'

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/matches.hpp:935:13: error: 'value' is not a member of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>), EmtnTermOrGram(boost::proto::_child_c<0>)>()> >'

boost_1_42_0/boost/proto/matches.hpp: In instantiation of 'boost::proto::detail::or_2<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >':

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_3<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>,
 boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:968:13: instantiated from 'boost::proto::detail::or_4<false, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::or_<boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> > >'

boost_1_42_0/boost/proto/matches.hpp:985:13: instantiated from 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::or_<EmtnTermOrGram, EmtnShiftFObjGram> >'

boost_1_42_0/boost/proto/matches.hpp:505:13: instantiated from 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, EmotionGram>'

boost_1_42_0/boost/proto/operators.hpp:77:9: instantiated from 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >'

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/matches.hpp:960:13: error: 'value' is not a member of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::and_<boost::proto::op::shift_right<EmtnTermOrGram, boost::proto::op::terminal<boost::proto::wildcardns_::_> >, boost::proto::control::if_<arity_caller::CanBeCalled<boost::proto::_value(boost::proto::_child_c<1>),
 EmtnTermOrGram(boost::proto::_child_c<0>)>()> > >'

boost_1_42_0/boost/proto/matches.hpp: In instantiation of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::or_<EmtnTermOrGram, EmtnShiftFObjGram> >':

boost_1_42_0/boost/proto/matches.hpp:505:13: instantiated from 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, EmotionGram>'

boost_1_42_0/boost/proto/operators.hpp:77:9: instantiated from 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >'

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/matches.hpp:985:13: error: 'value' is not a member of 'boost::proto::detail::matches_<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, boost::proto::control::or_<boost::proto::when<boost::proto::op::logical_or<EmtnTermOrGram, EmtnTermOrGram>, boost::mpl::plus<EmtnTermOrGram(boost::proto::_child_c<0>), EmtnTermOrGram(boost::proto::_child_c<1>)>()>,
 boost::proto::when<boost::proto::control::and_<boost::proto::op::terminal<boost::proto::wildcardns_::_>, boost::proto::control::if_<IsEmtnStarter<boost::proto::_value>()> >, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFuncGram, mpl_::int_<1>()>, boost::proto::when<EmtnShiftFObjGram, mpl_::int_<1>()> > >'

In file included from boost_1_42_0/boost/proto/core.hpp:26:0,
                 from boost_1_42_0/boost/proto/proto.hpp:12,
                 from EmtnGram.hpp:4,
                 from main.cpp:5:

boost_1_42_0/boost/proto/operators.hpp: In instantiation of 'boost::proto::detail::generate_if_left<EmotionDom, boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >':

boost_1_42_0/boost/proto/operators.hpp:115:9: instantiated from 'boost::proto::detail::as_expr_if2<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

boost_1_42_0/boost/proto/operators.hpp:154:9: instantiated from 'boost::proto::detail::as_expr_if<boost::proto::tag::shift_right, const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >, const Plus2, void, void>'

main.cpp:33:86: instantiated from here
boost_1_42_0/boost/proto/operators.hpp:77:9: error: 'value' is not a member of 'boost::proto::result_of::matches<boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const Plus2&>, 0l> >, 2l>, EmotionGram>'

main.cpp: In function 'int main()':
main.cpp:33:86: error: no match for 'operator>>' in 'operator||(const Left&, const Right&) [with Left = EW1<InpPool, GameState, AmmoMsg>, Right = EW1<InpPool, GameState, AmmoMsg>, typename boost::proto::detail::enable_binary<EmotionDom, IsEmtnStarter<Arg>, Left, IsEmtnStarter<Right>, Right, typename boost::proto::functional::make_expr<boost::proto::tag::logical_or, EmotionDom>::impl<const Left&, const Right&>::result_type>::type = EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::logical_or, boost::proto::argsns_::list2<EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> >, EmotionExpr<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const EW1<InpPool, GameState, AmmoMsg>&>, 0l> > >, 2l> >](((const EW1<InpPool, GameState, AmmoMsg>&)((const EW1<InpPool, GameState, AmmoMsg>*)(& EW1<InpPool, GameState, AmmoMsg>())))) >>
 Plus2()'


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net