| Home | Libraries | People | FAQ | More

## Struct template expression

boost::yap::expression

## Synopsis

    // In header: <boost/yap/expression.hpp>

    template<expr_kind Kind, typename Tuple>
    struct expression {
      // types
      typedef Tuple tuple_type;

      // construct/copy/destruct
      expression();
      expression(tuple_type &&);

      // public member functions
      decltype(auto) constexpr value();
      decltype(auto) constexpr left();
      decltype(auto) constexpr right();

      // public data members
      static const expr_kind kind;
      tuple_type elements;
    };

## Description

Reference expression template that provides all operator overloads.

| Note

Due to a limitation of Doxygen, each of the `value()`, `left()`, `right()`, and operator overloads listed here is a stand-in for three member functions. For each function `f`, the listing here is:

    return_type f ();

However, there are actually three functions:

    return_type f () const &;
    return_type f () &;
    return_type f () &&;

### `expression` public construct/copy/destruct

1.     expression();

   Default constructor. Does nothing.

2.     expression(tuple_type && rhs);

   Moves rhs into the only data mamber, `elements`.

### `expression` public member functions

1.     decltype(auto) constexpr value();

   A convenience member function that dispatches to the free function `value()`.

2.     decltype(auto) constexpr left();

   A convenience member function that dispatches to the free function `left()`.

3.     decltype(auto) constexpr right();

   A convenience member function that dispatches to the free function `right()`.