#include namespace proto = boost::proto; typedef proto::terminal int_terminal; typedef proto::terminal double_terminal; template struct actor1; struct grammar1; struct domain1 : proto::domain< proto::pod_generator , grammar1 , proto::default_domain > {}; struct grammar1 : proto::or_< proto::plus , int_terminal > {}; template struct actor1 { BOOST_PROTO_BASIC_EXTENDS(Expr, actor1, domain1) }; template struct actor2; struct grammar2; struct domain2 : proto::domain< proto::pod_generator , grammar2 , domain1 > {}; struct grammar2 : proto::or_< grammar1 , double_terminal > {}; template struct actor2 { BOOST_PROTO_BASIC_EXTENDS(Expr, actor2, domain2) }; actor1 t1 = {{0}}; actor2 t2 = {{0}};