In file included from /usr/local/include/boost-1_45/boost/proto/core.hpp:26:0, from /Users/joelfalcou/nt2/sandbox/foo.cpp:12: /usr/local/include/boost-1_45/boost/proto/operators.hpp: In instantiation of 'boost::proto::detail::enable_binary, boost::proto::is_extension >, 0l> >&, calculator_expression, 0l> > >, 2l> > >, mpl_::bool_, mpl_::bool_, mpl_::bool_ >, boost::proto::tag::comma, void, calculator_expression >, 0l> >&, calculator_expression, 0l> > >, 2l> > >': /usr/local/include/boost-1_45/boost/proto/operators.hpp:93:9: instantiated from 'boost::proto::detail::enable_binary, boost::proto::is_extension >, 0l> >&, calculator_expression, 0l> > >, 2l> > >, mpl_::bool_, mpl_::bool_, mpl_::bool_ >, boost::proto::tag::comma, void, calculator_expression >, 0l> >&, calculator_expression, 0l> > >, 2l> > >' /usr/local/include/boost-1_45/boost/proto/matches.hpp:978:96: instantiated from 'boost::proto::detail::_and_impl, Expr, State, Data>::result_type boost::proto::detail::_and_impl, Expr, State, Data>::operator()(typename boost::proto::detail::_and_impl, Expr, State, Data>::expr_param, typename boost::proto::detail::_and_impl, Expr, State, Data>::state_param, typename boost::proto::detail::_and_impl, Expr, State, Data>::data_param) const [with G0 = print_tag(boost::proto::_), G1 = boost::proto::generator(boost::proto::_), Expr = const boost::proto::exprns_::expr >, 0l> >&, calculator_expression, 0l> > >, 2l>&, State = int, Data = int, boost::proto::detail::_and_impl, Expr, State, Data>::result_type = calculator_expression >, 0l> >&, calculator_expression, 0l> > >, 2l> >, typename boost::proto::detail::_and_impl, Expr, State, Data>::expr_param = const boost::proto::exprns_::expr >, 0l> >&, calculator_expression, 0l> > >, 2l>&, typename boost::proto::detail::_and_impl, Expr, State, Data>::state_param = const int&, typename boost::proto::detail::_and_impl, Expr, State, Data>::data_param = const int&]' /usr/local/include/boost-1_45/boost/proto/transform/impl.hpp:96:9: instantiated from 'typename boost::proto::detail::apply_transform::result_type boost::proto::transform::operator()(Expr&) const [with Expr = const boost::proto::exprns_::expr >, 0l> >&, calculator_expression, 0l> > >, 2l>, PrimitiveTransform = boost::proto::and_(boost::proto::_), void, void, void, void, void, void>, X = void, typename boost::proto::detail::apply_transform::result_type = calculator_expression >, 0l> >&, calculator_expression, 0l> > >, 2l> >]' /usr/local/include/boost-1_45/boost/proto/make_expr.hpp:744:46: instantiated from 'boost::proto::detail::make_expr_::result_type boost::proto::detail::make_expr_::operator()(typename boost::add_reference::type, typename boost::add_reference::type) const [with Tag = boost::proto::tag::plus, Domain = calculator_domain, A0 = const calculator_expression >, 0l> >&, A1 = const double&, boost::proto::detail::make_expr_::result_type = calculator_expression >, 0l> >&, calculator_expression, 0l> > >, 2l> >, typename boost::add_reference::type = const calculator_expression >, 0l> >&, typename boost::add_reference::type = const double&]' /usr/local/include/boost-1_45/boost/proto/operators.hpp:241:1: instantiated from 'const typename boost::proto::detail::enable_binary, boost::proto::is_extension >, boost::proto::tag::plus, const Left, const Right>::type boost::proto::exprns_::operator+(const Left&, const Right&) [with Left = calculator_expression >, 0l> >, Right = double, typename boost::proto::detail::enable_binary, boost::proto::is_extension >, boost::proto::tag::plus, const Left, const Right>::type = calculator_expression >, 0l> >&, calculator_expression, 0l> > >, 2l> >]' /Users/joelfalcou/nt2/sandbox/foo.cpp:129:24: instantiated from here /usr/local/include/boost-1_45/boost/proto/operators.hpp:81:9: error: forming reference to void