E2418 Profondeur d'instanciation maximum dépassée ; vérifiez la récursivité (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Erreurs et avertissements du compilateur (C++) - Index

Le compilateur ne supporte que 256 niveaux d'instanciation avant de déclencher cette erreur. Le problème principal est le contrôle de la profondeur de la pile, car l'analyseur utilise des fonctions récursives pour gérer l'instanciation de type. Voici un exemple de ce qui pourrait produire une telle erreur :

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;// erreur : profondeur d'instanciation dépassée
}