if_c.rst
来自「Boost provides free peer-reviewed portab」· RST 代码 · 共 106 行
RST
106 行
.. Metafunctions/Type Selection//if_c |20.. Copyright Aleksey Gurtovoy, David Abrahams 2007... 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)if_c====Synopsis--------.. parsed-literal:: template< bool c , typename T1 , typename T2 > struct if_c { typedef |unspecified| type; };Description-----------Returns one of its two arguments, ``T1`` or ``T2``, depending on the value ofintegral constant ``c``. ``if_c<c,t1,t2>::type`` is a shorcut notation for ``if_< bool_<c>,t1,t2 >::type``.Header------.. parsed-literal:: #include <boost/mpl/if.hpp>Parameters----------+---------------+-----------------------------------+-----------------------------------------------+| Parameter | Requirement | Description |+===============+===================================+===============================================+| ``c`` | An integral constant | A selection condition. |+---------------+-----------------------------------+-----------------------------------------------+| ``T1``, ``T2``| Any type | Types to select from. |+---------------+-----------------------------------+-----------------------------------------------+Expression semantics--------------------For any integral constant ``c`` and arbitrary types ``t1``, ``t2``:.. parsed-literal:: typedef if_c<c,t1,t2>::type t;:Return type: Any type.:Semantics: Equivalent to ``typedef if_< bool_<c>,t1,t2 >::type t;`` Example-------.. parsed-literal:: typedef if_c<true,char,long>::type t1; typedef if_c<false,char,long>::type t2; BOOST_MPL_ASSERT(( is_same<t1, char> )); BOOST_MPL_ASSERT(( is_same<t2, long> ));.. parsed-literal:: // allocates space for an object of class T on heap or "inplace" // depending on its size template< typename T > struct lightweight { // ... typedef typename if_c< sizeof(T) <= sizeof(T*) , inplace_storage<T> , heap_storage<T> >::type impl_t; impl_t impl; };See also--------|Metafunctions|, |Integral Constant|, |if_|, |eval_if|, |bool_|
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?