我有时发现自己需要以下内容:
template<bool B, typename T1, typename T2>
struct choose{
typedef T1 type;
};
template<typename T1, typename T2>
struct choose<false, T1, T2>{
typedef T2 type;
};
我用它来有条件地选择一种或另一种。现在,标准库中是否已经有了这样的功能呢? Boost.MPL has something similar,但这不完全相同(采用类型,而不是bool),我不想将Boost包含在这个小东西中。 :)
答案 0 :(得分:6)
是的:它在C ++ 0x(或Boost中的std::conditional
)中称为boost::conditional
。
您引用的boost::mpl::if
具有相应的boost::mpl::if_c
,其中bool
代替类型;这是Boost类型特征库中的常见模式。