Advertencia del compilador (nivel 1) C4836

Actualización: noviembre 2007

Mensaje de error

extensión no estándar utilizada : 'tipo' : los tipos locales o sin nombre no se pueden utilizar como argumentos de plantilla
nonstandard extension used : 'type' : local types or unnamed types cannot be used as template arguments

El estándar de C++ no permite el uso de tipos locales como argumentos de plantilla, pero el compilador de Visual C++ sí que lo permite con la opción /Ze. La advertencia C4836 es una advertencia informativa, para hacerle saber que está escribiendo código no conforme. Para obtener más información, vea /Za, /Ze (Deshabilitar extensiones de lenguaje).

La advertencia C4836 está desactivada de manera predeterminada. Vea Compiler Warnings That Are Off by Default para obtener más información.

Ejemplo

El ejemplo siguiente genera el error C4836.

// C4836.cpp
// compile with: /W1
#pragma warning(default:4836)
template <class T>
struct TA {};

struct R {
public:
   void f() {
      struct S {};
      TA<S> ta;   // C4836
   }
};

int main() {
   R r;
   r.f();
}