Возвращает один из двух аргументов.T1илиT2в зависимости от величины интегральной постояннойc.if_c::typeявляется рубцовым обозначением для, если_<bool_,t1,t2>:.
// 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;
};