C++ 如果-然后-其他

示例

C ++ 11

类型std::conditional在标准库头<type_traits>可以选择一种类型的或其他,基于编译时布尔值:

template<typename T>
struct ValueOrPointer
{
    typename std::conditional<(sizeof(T) > sizeof(void*)), T*, T>::type vop;
};

该结构包含一个指向TifT大于指针大小的指针,或者包含一个T小于或等于指针大小的指针。因此sizeof(ValueOrPointer)将始终为<= sizeof(void*)。