C4836 de aviso (nível 1) do compilador
extensão padrão utilizada: 'tipo' : tipos de locais ou sem nome não pode ser usado como argumentos de modelo
O padrão C++ não permite o uso de tipos de locais como argumentos de modelo, mas o compilador Visual C++ permitem isso em /Ze. C4836 é um aviso informativo, para que você saiba o que você está escrevendo o código de não-conformes. Para obter mais informações, consulte / Za, /Ze (linguagem de desabilitar extensões).
C4836 está desativado por padrão. Consulte Compiler Warnings That Are Off by Default para obter mais informações.
Exemplo
O exemplo a seguir gera 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();
}