禁用MSVC警告C4482是否安全?

时间:2011-10-13 17:02:05

标签: c++ c++11 visual-studio-2010

虽然使用枚举名称限定枚举值是无效的C ++ 03,但根据我的理解,它是有效的C ++ 11。尽管如此,MSVC 10还会针对以下内容生成警告C4482:

enum E { A, B };

int i = E::A;  // warning C4482 (but valid C++11?)

由于我们的许多代码都使用C ++ 11功能(特别是lambdas),因此禁用此警告似乎是安全的。我是对的,代码是有效的C ++ 11吗?

注意:我没有编写有问题的代码,我宁愿不通过并更改每次出现的代码。

修改:添加了一些相关链接。

1 个答案:

答案 0 :(得分:9)

  

由于我们的许多代码都使用C ++ 11功能(特别是lambdas),因此禁用此警告似乎是安全的。

如果您已经依赖于C ++ 11功能,那么是的。 C ++ 11允许您使用以枚举名称为范围的常规枚举。微软有一段时间将其作为扩展,因此他们发出了关于非标准行为的警告。

所以你可以禁用它。