3rdParty/boost/1.78.0/libs/mpl/doc/refmanual/if.html
| Prev Next | Back Along | Up Home | Full TOC | Front Page / Metafunctions / Type Selection / if_ |
template<
typename C
, typename T1
, typename T2
>
struct[if\_](./if.html){
typedef_unspecified_type;
};
Returns one of its two arguments, T1 or T2, depending on the value C.
#include <[boost/mpl/if.hpp](../../../../boost/mpl/if.hpp)>
| Parameter | Requirement | Description |
|---|---|---|
| C | Integral Constant | A selection condition. |
| T1, T2 | Any type | Types to select from. |
For any Integral Constant c and arbitrary types t1, t2:
typedef[if\_](./if.html)<c,t1,t2>::type t;
| Return type: | Any type. | | Semantics: | If c::value == true, t is identical to t1; otherwise t is identical to t2. |
typedef[if\_](./if.html)<[true\_](./bool.html),char,long>::type t1;
typedef[if\_](./if.html)<[false\_](./bool.html),char,long>::type t2;[BOOST\_MPL\_ASSERT](./assert.html)(( is_same<t1, char> ));[BOOST\_MPL\_ASSERT](./assert.html)(( is_same<t2, long> ));
// allocates space for an object of class T on heap or "inplace"
// depending on its[size](./size.html)template< typename T > struct lightweight
{
// ...
typedef typename[if\_](./if.html)<[less\_equal](./less-equal.html)<[sizeof\_](./sizeof.html)<T>,[sizeof\_](./sizeof.html)<T*> >
, inplace_storage<T>
, heap_storage<T>
>::type impl_t;
impl_t impl;
};
Metafunctions, Integral Constant, if_c, eval_if
| Prev Next | Back Along | Up Home | Full TOC |
Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |