Xeo*_*Xeo 5 c++ boost metaprogramming enable-if
正如问题所述,人们是否有理由将结构版本用于正常条件?
不要在整数常量表达式中使用逻辑运算符; 使用模板元编程代替.
标题包含许多变通模板,它们履行逻辑运算符的作用,例如代替:
INTEGRAL_CONSTANT1 || INTEGRAL_CONSTANT2
使用:
::boost::type_traits::ice_or<INTEGRAL_CONSTANT1,INTEGRAL_CONSTANT2>::value
基本原理:许多编译器(特别是Borland和Microsoft编译器)倾向于不将逻辑运算符的整数常量表达式识别为真正的整数常量表达式.当积分常量表达式嵌套在模板代码深处并且难以重现和诊断时,问题通常只会出现.
所以我说永远不会在兼容的编译器上.(但如果您需要支持不合规的编译器,请使用它.)