Одно из применений написанного вами кода - узнать глубину шаблона компилятора, прочитав сообщение об ошибке при его компиляции:)
С 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; };