http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53599
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-06-07 09:36:26 UTC --- Even shorter (but invalid): template <bool T> struct C { }; template <typename T> struct E { static bool const value = true; }; template <typename T> int foo () { struct F; struct G { static int *(F::*bar ()) (T) { } }; enum { I = sizeof (C <((E <T>::value))> (G::bar ())) }; return 1; } int z = foo <int> ();