http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47336
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-04-18 23:23:36 UTC --- Here's another example which produces the "error reporting routines re-entered" ICE, this time on invalid code: template<typename T> T declval(); template<typename T> struct S { template<typename U> static U get(const volatile T&); template<typename U> static decltype(*declval<U>()) get(...); typedef decltype(get<T>(declval<T>())) type; }; struct X { }; S<X>::type x;