2011-10-13 9 views
10

Si bien calificar un valor de enumeración con el nombre de la enumeración no es válido C++ 03, es válido C++ 11, por lo que entiendo. A pesar de esto, MSVC 10 genera C4482 advertencia para lo siguiente:¿Es seguro desactivar la advertencia MSVC C4482?

enum E { A, B }; 

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

Dado que gran parte de nuestro código C++ utiliza 11 características (especialmente lambdas), parece seguro deshabilitar esta advertencia. ¿Tengo razón en que el código es válido C++ 11?

Nota: No escribí el código en cuestión, y preferiría no pasar y cambiar cada vez que ocurra esto.

Editar: Agregado algunos enlaces relevantes.

Respuesta

9

Dado que gran parte de nuestro código utiliza C++ 11 características (especialmente lambdas), parece seguro deshabilitar esta advertencia.

Si ya confía en las características de C++ 11, entonces sí. C++ 11 le permite usar enumeraciones regulares delimitadas por el nombre de la enumeración. Microsoft tuvo esto como una extensión por algún tiempo, por lo que emitieron una advertencia sobre el comportamiento no estándar.

Para poder deshabilitarlo.

+0

Gracias. Eso es lo que había pensado. Necesitaba a alguien para verificar que no me faltaba algo. – jakar

Cuestiones relacionadas