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
This is an older version of Boost and was released in 2021. The current version is 1.89.0.
| Front Page / Metafunctions / Type Selection / if_ |
template<
typename C
, typename T1
, typename T2
>
struct if_
{
typedef unspecified type;
};
Returns one of its two arguments, T1 or T2, depending on the value C.
#include <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_<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_<true_,char,long>::type t1; typedef if_<false_,char,long>::type t2; BOOST_MPL_ASSERT(( is_same<t1, char> )); BOOST_MPL_ASSERT(( is_same<t2, long> ));
// allocates space for an object of class T on heap or "inplace" // depending on its size template< typename T > struct lightweight { // ... typedef typename if_< less_equal< sizeof_<T>, sizeof_<T*> > , inplace_storage<T> , heap_storage<T> >::type impl_t; impl_t impl; };