Каков пример практического использования "рекурсивно вложенного шаблона"?

Я нашел эту специфическую модель, упомянутую в этом вопросе.

Каково практическое использование такого шаблона?

#include <iostream>
using namespace std;

template<typename T>
struct Recursive
{
    using cycle = struct X : Recursive<X> { int a; };
    cycle c;
};

int main() 
{
    Recursive<int> x;
    // cout<< x.c.a; // this gives infinite recursion error
    return 0;
}

1 ответ

Одно из применений написанного вами кода - узнать глубину шаблона компилятора, прочитав сообщение об ошибке при его компиляции:)

С clang:

<source>:8:11: fatal error: recursive template instantiation exceeded maximum depth of 1024

С gcc:

<source>:7:26: fatal error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum)

 using cycle = struct X : Recursive<X> { int a; };
Другие вопросы по тегам