Schwerwiegender Fehler C1202

Der Kontext für einen rekursiven Typ oder eine Funktionsabhängigkeit ist zu komplex

Eine Vorlagendefinition war rekursiv oder hat die zulässige Komplexität überschritten.

Beispiele

Im folgenden Beispiel wird C1202 generiert.

// C1202.cpp
// processor: x86 IPF
template<int n>
class Factorial : public Factorial<n-1>  {   // C1202
public:
   operator int () {
      return Factorial <n-1>::operator int () * n;
   }
};
Factorial<7> facSeven;

Mögliche Lösung:

// C1202b.cpp
// compile with: /c
template<int n>
class Factorial : public Factorial<n-1> {
public:
   operator int () {
      return Factorial <n-1>::operator int () * n;
   }
};

template <>
class Factorial<0> {
public:
   operator int () {
      return 1;
   }
};

Factorial<7> facSeven;