2011-10-13 12 views
10

Chociaż kwalifikowanie wartości wyliczeniowej z nazwą wyliczenia jest nieprawidłowe C++ 03, to jest to poprawne C++ 11, z tego co rozumiem. Pomimo tego, MSVC 10 generuje ostrzeżenie C4482 za:Czy można bezpiecznie wyłączyć ostrzeżenie MSVC C4482?

enum E { A, B }; 

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

Ponieważ znaczna część naszego kodu używa C++ 11 możliwości (zwłaszcza lambdy), wydaje się bezpieczne, aby wyłączyć to ostrzeżenie. Czy mam rację, że kod jest prawidłowy C++ 11?

Uwaga: Nie napisałem kodu, o którym mowa, a wolałbym nie przechodzić i zmieniać każdego wystąpienia tego.

Edytuj: Dodano kilka istotnych linków.

Odpowiedz

9

Ponieważ znaczna część naszego kodu używa C++ 11 cechy (zwłaszcza lambda), wydaje się bezpieczne, aby wyłączyć to ostrzeżenie.

Jeśli już polegasz na funkcjach C++ 11, to tak. C++ 11 pozwala na użycie zwykłych wyliczeń z zakresu nazw wyliczeń. Microsoft miał to przez jakiś czas jako rozszerzenie, więc ostrzeżenie o niestandardowym zachowaniu zostało ostrzeżone.

Możesz go wyłączyć.

+0

Dzięki. Tak myślałem. Potrzebowałem kogoś, kto by potwierdził, że czegoś mi nie brakuje. – jakar

Powiązane problemy