Подтвердить что ты не робот

Безопасно ли отключать MSVC-предупреждение C4482?

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

enum E { A, B };

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

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

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

Изменить: Добавлены некоторые релевантные ссылки.

4b9b3361

Ответ 1

Так как большая часть нашего кода использует возможности С++ 11 (особенно lambdas), кажется безопасным отключить это предупреждение.

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

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