PrevUpHomeNext

Macro BOOST_YAP_USER_CALL_OPERATOR_N

BOOST_YAP_USER_CALL_OPERATOR_N

Synopsis

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

BOOST_YAP_USER_CALL_OPERATOR_N(expr_template, n)

Description

Defines operator overloads for the call operator taking N parameters ("operator()(t0, t1, ... tn-1)") that each produce an expression instantiated from the expr_template expression template. One overload is defined for each of the qualifiers const &, &, and &&. For the lvalue reference overloads, *this is captured by reference into the resulting expression. For the rvalue reference overload, *this is moved into the resulting expression.

The u parameters to each of the defined overloads may be any type, including an expression. Each non-expression is wrapped in a terminal expression.

Example:

template <boost::yap::expr_kind Kind, typename Tuple>
struct user_expr
{
    static const boost::yap::expr_kind kind = Kind;

    Tuple elements;

    // Member operator overloads for operator()().  These will match any
    // number of parameters.  Each one can be any type, even another
    // expression.
    BOOST_YAP_USER_CALL_OPERATOR(::user_expr)
};

Parameters:

expr_template

The expression template to use to instantiate the result expression. expr_template must be an ExpressionTemplate.

n

The number of parameters accepted by the operator() overloads. n must be <= BOOST_PP_LIMIT_REPEAT.


PrevUpHomeNext