【发布时间】:2011-03-23 02:59:26
【问题描述】:
正如问题所述,人们是否有理由使用结构版本而不是普通条件句?
【问题讨论】:
标签: c++ boost metaprogramming enable-if
正如问题所述,人们是否有理由使用结构版本而不是普通条件句?
【问题讨论】:
标签: c++ boost metaprogramming enable-if
摘自Boost Coding Guidelines for Integral Constant Expressions:
不要在整型常量表达式中使用逻辑运算符;改用模板元编程。
标题包含许多解决方法模板,它们履行逻辑运算符的角色,例如,而不是:
INTEGRAL_CONSTANT1 || INTEGRAL_CONSTANT2用途:
::boost::type_traits::ice_or<INTEGRAL_CONSTANT1,INTEGRAL_CONSTANT2>::value基本原理:许多编译器(尤其是 Borland 和 Microsoft 编译器)倾向于不将涉及逻辑运算符的整型常量表达式识别为真正的整型常量表达式。该问题一般只在整数常量表达式嵌套在模板代码深处时才会出现,并且难以重现和诊断。
所以我会说永远不要使用兼容的编译器。 (但如果你需要支持不兼容的编译器,请使用它。)
【讨论】: