2011-10-13 33 views
10

虽然使用枚举的名称限定枚举值是无效的C++ 03,但它是有效的C++ 11,据我所知。尽管如此,MSVC 10生成以下警告C4482:禁用MSVC警告C4482安全吗?

enum E { A, B }; 

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

由于大部分的我们的代码使用C++ 11层的功能(尤其是lambda表达式),似乎可以禁用此警告。我的代码是否是有效的C++ 11?

注意:我没有编写有问题的代码,我宁愿不经过并更改每一个这样的事件。

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

回答

9

由于大部分的我们的代码使用C++ 11层的功能(尤其是lambda表达式),似乎可以禁用此警告。

如果您已经依赖于C++ 11功能,那么是的。 C++ 11允许您使用枚举名称范围内的常规枚举。微软已经把它作为一段时间的延伸,所以他们发出了一个关于非标准行为的警告。

所以你可以禁用它。

+0

谢谢。这就是我的想法。我需要有人来证实我没有错过任何东西。 – jakar