Contains all the overloaded operators that make it possible to build Proto expression trees. is_expr< T > Boolean metafunction that can be used to enable the operator overloads in the exops namespace for the specified non-Proto terminal type. unspecified Arg & unspecified Arg const & unspecified Arg & unspecified Arg const & unspecified Arg & unspecified Arg const & unspecified Arg & unspecified Arg const & unspecified Arg & unspecified Arg const & unspecified Arg & unspecified Arg const & unspecified Arg & unspecified Arg const & unspecified Arg & unspecified Arg const & unspecified Arg & int unspecified Arg const & int unspecified Arg & int unspecified Arg const & int unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & unspecified Left & Right & unspecified Left & Right const & unspecified Left const & Right & unspecified Left const & Right const & typename proto::result_of::make_expr< proto::tag::if_else_, proto::deduce_domain, A0 const &, A1 const &, A2 const & >::type const A0 const & A1 const & A2 const & Defines a complete set of expression template-building operator overloads for use with non-Proto terminal types. With BOOST_PROTO_DEFINE_OPERATORS(), it is possible to non-intrusively adapt an existing (non-Proto) type to be a Proto terminal. Trait is the name of a unary Boolean metafunction that returns true for any types you would like to treat as Proto terminals. Domain is the name of the Proto domain associated with these new Proto terminals. You may use proto::default_domain for the Domain if you do not wish to associate these terminals with any domain. Example: namespace My { // A non-Proto terminal type struct S {}; // A unary Boolean metafunction that returns true for type S template<typename T> struct IsS : mpl::false_ {}; template<> struct IsS<S> : mpl::true_ {}; // Make S a Proto terminal non-intrusively by defining the // appropriate operator overloads. This should be in the same // namespace as S so that these overloads can be found by // argument-dependent lookup BOOST_PROTO_DEFINE_OPERATORS(IsS, proto::default_domain) } int main() { My::S s1, s2; // OK, this builds a Proto expression template: s1 + s2; }