Kompilatorfel C3203

'TYP': En ospecialiserad klassmall eller generisk mall kan inte användas som en mall eller generiskt argument för parametermallen "param", där en verklig typ förväntas.

Anmärkningar

Du skickade ett ogiltigt argument till en mallklass eller en generisk. Klassmallen generisk förväntar sig en typ som parameter.

Det här felet kan genereras som ett resultat av kompilatorkonformitetsarbete som utfördes för Visual Studio 2005: en ospecialiserad klassmall kan inte användas som ett mallargument i en basklasslista. Lös C3203 genom att uttryckligen lägga till malltypparametern i mallklassnamnet när du använder den som en mallparameter i en basklasslista.

Examples

I följande exempel genereras C3203:

// 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;
}

Följande exempel genererar C3203 och visar hur du åtgärdar det:

// 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 kan också inträffa när du använder generiska program:

// 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