Partager via


Avertissement du compilateur (niveau 1) C4836

Mise à jour : novembre 2007

Message d'erreur

extension non standard utilisée : 'type' : les types locaux ou sans nom ne peuvent pas être utilisés comme arguments template
nonstandard extension used : 'type' : local types or unnamed types cannot be used as template arguments

La norme C++ n'autorise pas l'utilisation de types locaux comme arguments template, mais le compilateur Visual C++ les autorise sous /Ze. C4836 est un avertissement fourni à titre d'information pour vous signaler que vous écrivez du code non conforme. Pour plus d'informations, consultez /Za, /Ze (Désactiver les extensions de langage).

L'erreur C4836 est désactivée par défaut. Pour plus d'informations, consultez Compiler Warnings That Are Off by Default.

Exemple

L'exemple suivant génère l'erreur 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();
}