Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Macro BOOST_YAP_USER_UDT_ANY_IF_ELSE

BOOST_YAP_USER_UDT_ANY_IF_ELSE

Synopsis

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

BOOST_YAP_USER_UDT_ANY_IF_ELSE(expr_template, udt_trait)

Description

Defines a function if_else() that acts as an analogue to the ternary operator (?:), since the ternary operator is not user-overloadable. The return type of if_else() is an expression instantiated from the expr_template expression template.

Each parameter to if_else() may be any type that is not an expression. At least on parameter must be a type T for which

udt_trait<std::remove_cv_t<std::remove_reference_t<T>>>::value

is true. Each parameter is wrapped in a terminal expression.

Example:


Parameters:

expr_template

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

udt_trait

A trait template to use to constrain which types are accepted as template parameters to if_else().


PrevUpHomeNext