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

问题描述

| 有时我需要满足以下条件:
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具有类似的功能,但是并不完全相同(采用类型,而不是布尔值),我不想在这小东西中包含Boost。 :)     

解决方法

        是的:在C ++ 0x中称为
std::conditional
(在Boost中称为
boost::conditional
)。 您引用的
boost::mpl::if
有一个对应的
boost::mpl::if_c
,而该takes4 a是
bool
而不是类型。这是Boost类型特征库中的常见模式。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...