Compilador erro C3203
Mensagem de erro
'tipo': tipo de classe unspecialized não pode ser usado sistema autônomo argumento de tipo para o parâmetro de tipo 'param', esperava um tipo real
Você passou um argumento inválido para um modelo de classe ou genérico.O modelo de classe ou genérica espera um tipo sistema autônomo um parâmetro.
Esse erro pode ser gerado sistema autônomo resultado do compilador conformidade trabalho foi realizado em Visual C++ 2005: um modelo de classe unspecialized não pode ser usado sistema autônomo um argumento de modelo em uma lista de classe base.Para resolver C3203, explicitamente adicione parâmetros de tipo de modelo do nome de classe do modelo quando ele usado sistema autônomo um parâmetro de modelo em uma lista de classe base.Consulte Quebrar alterações no compilador de 2005 Visual C++ para obter mais informações.
// C3203.cpp
template< typename T >
struct X {
void f(X) {}
};
template< typename T >
struct Y : public X<Y> { // C3203
// try the following line instead
// struct Y : public X<Y<T> > {
void f(Y) {}
};
int main() {
Y<int> y;
}
O exemplo a seguir gera C3203:
// C3203_b.cpp
// compile with: /c
template <class T>
struct S1 {};
template <class T>
class C1 {};
typedef C1<S1> MyC1; // C3203
// OK
template <template <class> class T>
class C2 {};
typedef C2<S1> MyC1;
template <class T>
class C3 {};
typedef C3<S1<int> > MyC12;
C3203 também pode ocorrer ao usar genéricos:
// C3203_c.cpp
// compile with: /clr /c
generic <class T>
value struct GS1 {};
generic <class T>
value struct GC1 {};
typedef GC1<GS1> MyGC1; // C3203
typedef GC1<GS1<int> > MyGC2; // OK