Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Header <boost/proto/operators.hpp>

Contains all the overloaded operators that make it possible to build Proto expression trees.


BOOST_PROTO_DEFINE_OPERATORS(Trait, Domain)
namespace boost {
  namespace proto {
    template<typename T> struct is_extension;
    template<typename Arg> unspecified operator+(Arg & arg);
    template<typename Arg> unspecified operator+(Arg const & arg);
    template<typename Arg> unspecified operator-(Arg & arg);
    template<typename Arg> unspecified operator-(Arg const & arg);
    template<typename Arg> unspecified operator*(Arg & arg);
    template<typename Arg> unspecified operator*(Arg const & arg);
    template<typename Arg> unspecified operator~(Arg & arg);
    template<typename Arg> unspecified operator~(Arg const & arg);
    template<typename Arg> unspecified operator&(Arg & arg);
    template<typename Arg> unspecified operator&(Arg const & arg);
    template<typename Arg> unspecified operator!(Arg & arg);
    template<typename Arg> unspecified operator!(Arg const & arg);
    template<typename Arg> unspecified operator++(Arg & arg);
    template<typename Arg> unspecified operator++(Arg const & arg);
    template<typename Arg> unspecified operator--(Arg & arg);
    template<typename Arg> unspecified operator--(Arg const & arg);
    template<typename Arg> unspecified operator++(Arg & arg, int);
    template<typename Arg> unspecified operator++(Arg const & arg, int);
    template<typename Arg> unspecified operator--(Arg & arg, int);
    template<typename Arg> unspecified operator--(Arg const & arg, int);
    template<typename Left, typename Right> 
      unspecified operator<<(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator<<(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator<<(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator<<(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator>>(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator>>(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator>>(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator>>(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator*(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator*(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator*(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator*(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator/(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator/(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator/(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator/(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator%(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator%(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator%(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator%(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator+(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator+(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator+(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator+(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator-(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator-(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator-(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator-(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator<(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator<(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator<(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator<(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator>(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator>(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator>(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator>(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator<=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator<=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator<=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator<=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator>=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator>=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator>=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator>=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator==(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator==(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator==(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator==(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator!=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator!=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator!=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator!=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator||(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator||(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator||(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator||(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator&&(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator&&(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator&&(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator&&(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator&(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator&(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator&(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator&(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator|(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator|(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator|(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator|(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator^(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator^(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator^(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator^(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator,(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator,(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator,(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator,(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator->*(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator->*(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator->*(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator->*(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator<<=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator<<=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator<<=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator<<=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator>>=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator>>=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator>>=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator>>=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator*=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator*=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator*=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator*=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator/=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator/=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator/=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator/=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator%=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator%=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator%=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator%=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator+=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator+=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator+=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator+=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator-=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator-=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator-=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator-=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator&=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator&=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator&=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator&=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator|=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator|=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator|=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator|=(Left const & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator^=(Left & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator^=(Left & left, Right const & right);
    template<typename Left, typename Right> 
      unspecified operator^=(Left const & left, Right & right);
    template<typename Left, typename Right> 
      unspecified operator^=(Left const & left, Right const & right);
    template<typename A0, typename A1, typename A2> 
      typename proto::result_of::make_expr<
        proto::tag::if_else_, 
        proto::deduce_domain,
        A0 const &, 
        A1 const &, 
        A2 const &
      >::type const 
      if_else(A0 const & a0, A1 const & a1, A2 const & a2);
  }
}

PrevUpHomeNext