枚举到枚举的静态转换,编译器的性能警告

时间:2015-03-07 11:52:29

标签: c++ casting enums warnings static-cast

我的项目中声明了以下内容:

enum class OType : bool { Dynamic=true, Static=false };
OType getotype();

我正在使用以下功能:

double ComputeO(double K,bool type)

我这样称呼它:

ComputeO(some double, static_cast<bool>(getotype()))

对于这个static_cast我很高兴:

warning C4800: 'const dmodel::OType ' : forcing value to bool 'true' or 'false' (performance warning)

我不知道如何摆脱它,我明确指定演员不足够吗?

注意:我正在使用VC11(Visual Studio 2012)

THKS。

1 个答案:

答案 0 :(得分:2)

请参阅描述警告的https://msdn.microsoft.com/en-us/library/b6801kcy.aspx。特别是,它说:

  

将表达式转换为bool类型不会禁用警告,   这是设计的。

只需像这样重写你的电话:

enum class OType : bool { Dynamic=true, Static=false };
OType getotype();
double ComputeO(double K,bool type);

int main()
{
    ComputeO(1.0, getotype() == OType::Dynamic);
}