http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56449
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2013-02-25 22:42:12 UTC --- Both 4.7 and 4.8 exit with a sensible diagnostic: a.cc:2:19: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) instantiating ‘Loop<T*> Loop<T>::operator->() [with T = int************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************]’ a.cc:2:19: recursively required from ‘Loop<T*> Loop<T>::operator->() [with T = int]’ a.cc:2:19: required from here a.cc:2:19: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) instantiating ‘struct Loop<int*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************>’ a.cc:2:19: recursively required from ‘Loop<T*> Loop<T>::operator->() [with T = int]’ a.cc:2:19: required from here a.cc:2:19: error: invalid use of incomplete type ‘struct Loop<int*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************>’ a.cc:1:26: error: declaration of ‘struct Loop<int*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************>’