Aracılığıyla paylaş


Derleyici Hatası C3206

'function' : 'param' için geçersiz tür bağımsız değişkeni, 'typename' sınıf türünde tür bağımsız değişken listesi eksik

Açıklamalar

İşlev şablonu, şablon türü bağımsız değişkeni alma olarak tanımlanır. Ancak, bir şablon şablonu bağımsız değişkeni geçirildi.

Örnekler

Aşağıdaki örnek C3206 oluşturur:

// C3206.cpp
template <class T>
void f() {}

template <class T>
struct S {};

void f1() {
   f<S>();   // C3206
   // try the following line instead
   // f<S<int> >();
}

Olası çözüm:

// C3206b.cpp
// compile with: /c
template <class T>
void f() {}

template <class T>
struct S {};

void f1() {
   f<S<int> >();
}

C3206, genel değerler kullanılırken de oluşabilir:

// C3206c.cpp
// compile with: /clr
generic <class GT1>
void gf() {}

generic <class T>
value struct GS {};

int main() {
   gf<GS>();   // C3206
}

Olası çözüm:

// C3206d.cpp
// compile with: /clr
generic <class GT1>
void gf() {}

generic <class T>
value struct GS {};

int main() {
   gf<GS<int> >();
}

Sınıf şablonuna şablon türü bağımsız değişkeni olarak izin verilmez. Aşağıdaki örnek C3206 hatasını tetikler:

// C3206e.cpp
template <class T>
struct S {};

template <class T>
void func() {   // takes a type
   T<int> t;
}

int main() {
   func<S>();   // C3206 S is not a type.
}

Olası çözüm:

// C3206f.cpp
template <class T>
struct S {};

template <class T>
void func() {   // takes a type
   T t;
}

int main() {
   func<S<int> >();
}

Şablon şablonu parametresi gerekiyorsa, işlevi şablon şablonu parametresini alan bir şablon sınıfına sarmalamanız gerekir:

// C3206g.cpp
template <class T>
struct S {};

template<template<class> class TT>
struct X {
   static void func() {
      TT<int> t1;
      TT<char> t2;
   }
};

int main() {
   X<S>::func();
}