【发布时间】:2011-12-30 23:57:56
【问题描述】:
我使用模板参数来确定是否必须执行某个行为。但是这段代码会在 VS2008 上生成警告:Warning 26 warning C4127: conditional expression is constant
这里是代码示例:
template <class param, bool param2=true>
class superclass1
{
public:
int foo()
{
if(param2)
doSomthingMore();
return 1;
}
};
有没有办法转换代码以消除警告并获得相同的功能?
【问题讨论】:
-
是的,它被称为“模板元编程”。
-
顺便说一句,警告与“默认参数”无关。
-
是的,你是对的,我应该为这个问题找到一个更好的标题,你知道@KerrekSB吗?
-
我曾经在做同样的事情时收到此消息,但现在没有了。它可能在 VC++ 2010 上不再发出警告。我更喜欢模板专业化。你也可以用模板
ints 做类似的事情,这是你不能用专业化做的。 -
@KerrekSB:“傻”是“MSVC”一词的“替代表示”关键字
标签: c++ visual-studio visual-studio-2008 templates compiler-warnings