4 votes

Pourquoi est-ce que j'obtiens "recursive type or function dependency context too complex" ?

Pourquoi ce code génère-t-il l'erreur suivante dans Visual C++ ?
S'agit-il d'un bogue dans le compilateur ou le code est-il invalide ?

template<int N> int test(int = sizeof(test<N - 1>()));
template<> int test<0>(int);
int main() { return sizeof(test<1>()); }

Contexte de dépendance de type ou de fonction récursif trop complexe

4voto

Marc Glisse Points 2377

N'est pas encore déclaré au moment où vous l'utilisez. Un problème similaire se produit souvent en C++11 :

template<int N> auto test() -> decltype(test<N - 1>());
template<> auto test<0>() -> int;
int main() { return sizeof(test<1>()); }

Des discussions sont en cours pour changer cela à l'avenir. Une version de votre code qui se compile :

template<int N> int test(int);
template<> int test<0>(int);
template<int N> int test() { return test<N>(sizeof(test<N - 1>())); }
int main() { return sizeof(test<1>()); }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X