禁用MSVC警告C4482是否安全?

jak*_*kar 10 c++ visual-studio-2010 c++11

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

enum E { A, B };

int i = E::A;  // warning C4482 (but valid C++11?)
Run Code Online (Sandbox Code Playgroud)

由于我们的大部分代码都使用C++ 11特性(特别是lambdas),因此禁用此警告似乎是安全的.我是对的,代码是有效的C++ 11吗?

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

编辑:添加了一些相关链接.

Nic*_*las 9

由于我们的大部分代码都使用C++ 11特性(特别是lambdas),因此禁用此警告似乎是安全的.

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

所以你可以禁用它.