2011-10-13 15 views
10

Mentre qualificare un valore di enumerazione con il nome dell'enumerazione non è valido C++ 03, è valido C++ 11, da quello che ho capito. Nonostante questo, MSVC 10 genera C4482 di avviso per i seguenti:È sicuro disabilitare l'avviso MSVC C4482?

enum E { A, B }; 

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

Dato che gran parte del nostro codice utilizza C++ 11 caratteristiche (soprattutto lambda), sembra sicuro di disattivare questo avviso. Ho ragione che il codice è valido C++ 11?

Nota: non ho scritto il codice in questione e preferisco non passare e modificare ogni occorrenza di questo.

Modifica: Aggiunti alcuni collegamenti pertinenti.

risposta

9

Dato che gran parte del nostro codice utilizza C++ 11 caratteristiche (in particolare lambda), sembra sicuro di disattivare questo avviso.

Se si sta già facendo affidamento su funzionalità C++ 11, quindi sì. C++ 11 ti consente di usare le enumerazioni regolari con il nome dell'enumerazione. Microsoft ha avuto questa estensione per un po 'di tempo, quindi ha emesso un avviso sul comportamento non standard.

Quindi è possibile disabilitarlo.

+0

Grazie. Questo è quello che pensavo. Avevo bisogno di qualcuno per verificare che non mi mancasse qualcosa. – jakar