| Home | Libraries | People | FAQ | More

## 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()`.