E2418 Maximale Instantiierungstiefe überschritten; suchen Sie nach Rekursionen (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index

Wenn der Compiler mehr als die von ihm unterstützten 256 Instantiierungsebenen benötigt, generiert er diesen Fehler. Das Hauptproblem besteht in der Kontrolle der Stack-Tiefe, da der Parser die Typ-Instantiierung mithilfe rekursiver Funktionen verwaltet. Hier ein Beispiel, das diesen Fehler generiert:



 template<int T>
 class foo {
 public:
 static const int x = foo<T  1>::x;
 };
 template<int T>
 class foo<1> {
 public:
 static const int x = 1;
 };
 int main() {
 int y = foo<100000>::x;  // Fehler: maximale Instantiierungstiefe überschritten
 }