https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92735

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
For the case reported here, Clang and EDG do reject it, but I'm not yet
convinced GCC is wrong to accept it.

The implicit instantiation of is_Foo<Bad> causes:

"the implicit instantiation of the declarations, but not of the definitions, of
the non-deleted class member functions, member classes, scoped member
enumerations, static data members, member templates, and friends;"

and:

"in particular, the initialization (and any associated side effects) of a
static data member does not occur unless the static data member is itself used
in a way that requires the definition of the static data member to exist."

Nothing requires the instantiation of is_Foo<Bad>::hello.

Reply via email to