PrevUpHomeNext

Header <boost/yap/expression.hpp>

namespace boost {
  namespace yap {
    template<expr_kind Kind, typename Tuple> struct expression;

    template<typename T> 
      struct expression<expr_kind::terminal, hana::tuple< T >>;
    template<typename Expr> constexpr auto operator+(Expr &&);
    template<typename Expr> constexpr auto operator-(Expr &&);
    template<typename Expr> constexpr auto operator*(Expr &&);
    template<typename Expr> constexpr auto operator~(Expr &&);
    template<typename Expr> constexpr auto operator&(Expr &&);
    template<typename Expr> constexpr auto operator!(Expr &&);
    template<typename Expr> constexpr auto operator++(Expr &&);
    template<typename Expr> constexpr auto operator--(Expr &&);
    template<typename Expr> constexpr auto operator++(Expr &&, int);
    template<typename Expr> constexpr auto operator--(Expr &&, int);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator<<(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator>>(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator*(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator/(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator%(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator+(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator-(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator<(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator>(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator<=(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator>=(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator==(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator!=(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator||(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator&&(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator&(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator|(LExpr &&, RExpr &&);
    template<typename LExpr, typename RExpr> 
      constexpr auto operator^(LExpr &&, RExpr &&);
    template<typename Expr1, typename Expr2, typename Expr3> 
      constexpr auto if_else(Expr1 &&, Expr2 &&, Expr3 &&);
    template<expr_kind Kind, typename... T> 
      constexpr auto make_expression(T &&...);
    template<typename T> constexpr auto make_terminal(T &&);
    template<typename T> decltype(auto) constexpr as_expr(T &&);
  }
}

PrevUpHomeNext