Compilerwarnung (Stufe 1) C4836

Aktualisiert: November 2007

Fehlermeldung

Nicht dem Standard entsprechende Erweiterung: 'Typ': Lokale oder unbenannte Typen können nicht als Vorlagenargumente verwendet werden
nonstandard extension used : 'type' : local types or unnamed types cannot be used as template arguments

Im C++-Standard ist die Verwendung lokaler Typen als Vorlagenargumente nicht zulässig, der Visual C++-Compiler lässt dies jedoch unter /Ze zu. C4836 ist eine Warnmeldung zu Informationszwecken, um Sie darauf aufmerksam zu machen, dass Sie nicht-konformen Code schreiben. Weitere Informationen finden Sie unter /Za, /Ze (Spracherweiterungen deaktivieren).

C4836 ist standardmäßig deaktiviert. Weitere Informationen finden Sie unter Compiler Warnings That Are Off by Default.

Beispiel

Im folgenden Beispiel wird C4836 generiert.

// 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();
}