Avertissement du compilateur (niveau 1) C4836
extension non standard utilisée : 'type' : les types locaux ou sans nom ne peuvent pas être utilisés comme arguments template
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.Consultez Avertissements du compilateur qui sont éteints par défaut pour plus d'informations.
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();
}