Безопасно ли отключать MSVC-предупреждение C4482?
При определении значения перечисления с именем перечисления недействительно С++ 03, это действительно С++ 11, из того, что я понимаю. Несмотря на это, MSVC 10 генерирует предупреждение C4482 для следующего:
enum E { A, B };
int i = E::A; // warning C4482 (but valid C++11?)
Так как большая часть нашего кода использует возможности С++ 11 (особенно lambdas), кажется безопасным отключить это предупреждение. Правильно ли, что код действителен С++ 11?
Примечание. Я не писал код, о котором идет речь, и я бы предпочел не проходить и изменять каждое его появление.
Изменить: Добавлены некоторые релевантные ссылки.
Ответы
Ответ 1
Так как большая часть нашего кода использует возможности С++ 11 (особенно lambdas), кажется безопасным отключить это предупреждение.
Если вы уже полагаетесь на возможности С++ 11, то да. С++ 11 позволяет вам использовать регулярные перечисления, ограниченные именем перечисления. В течение некоторого времени у Microsoft было это расширение, поэтому они выпустили предупреждение о нестандартном поведении.
Итак, вы можете отключить его.