是否有'choose <bool,typename,typename>'的标准构造?

Xeo*_*Xeo 3 c++ conditional templates metaprogramming

我有时发现自己需要以下内容:

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;
};
Run Code Online (Sandbox Code Playgroud)

我用它来有条件地选择一种或另一种.现在,标准库中是否已经有了这样的功能呢?Boost.MPL有类似的东西,但是不完全相同(采用类型,而不是bool),我不想为这个小东西包含Boost.:)

Jam*_*lis 6

是的:它std::conditional在C++ 0x(或boost::conditionalBoost)中调用.

boost::mpl::if你举都有相应的是boost::mpl::if_c,需要一个bool,而不是一个类型; 这是Boost类型特征库中的常见模式.