Безопасно ли отключать предупреждение MSVC C4482? - PullRequest
10 голосов
/ 13 октября 2011

Хотя квалификация значения перечисления с именем перечисления недопустима C ++ 03, это действительно C ++ 11, насколько я понимаю. Несмотря на это, MSVC 10 генерирует предупреждение C4482 для следующего:

enum E { A, B };

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

Поскольку большая часть нашего кода использует функции C ++ 11 (особенно лямбды), кажется безопасным отключить это предупреждение. Я прав, что код действителен C ++ 11?

Примечание: я не писал код, о котором идет речь, и предпочел бы не проходить и не изменять каждое вхождение этого.

Редактировать: Добавлены некоторые соответствующие ссылки.

1 Ответ

9 голосов
/ 13 октября 2011

Поскольку большая часть нашего кода использует функции C ++ 11 (особенно лямбды), кажется безопасным отключить это предупреждение.

Если вы уже полагаетесь на функции C ++ 11, тогда да.C ++ 11 позволяет вам использовать обычные перечисления, ограниченные именем перечисления.В течение некоторого времени у Microsoft было это расширение, поэтому они выдавали предупреждение о нестандартном поведении.

Так что вы можете отключить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...