2011-10-13 62 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