Erro do compilador C2140
'type' : um tipo que é dependente de um parâmetro de tipo genérico não é permitido como um argumento para a característica de tipo intrínseca do compilador 'trait'
Um especificador de tipo inválido foi passado para uma característica de tipo.
Saiba mais em Suporte para compilador de traços de tipo.
Exemplo
O seguinte exemplo gera o erro C2140.
// C2140.cpp
// compile with: /clr /c
template <class T>
struct is_polymorphic {
static const bool value = __is_polymorphic(T);
};
class x {};
generic <class T>
ref class C {
void f() {
System::Console::WriteLine(__is_polymorphic(T)); // C2140
System::Console::WriteLine(is_polymorphic<T>::value); // C2140
System::Console::WriteLine(__is_polymorphic(x)); // OK
System::Console::WriteLine(is_polymorphic<x>::value); // OK
}
};