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

--- Comment #9 from Richard Smith <richard-gccbugzilla at metafoo dot co.uk> ---
Yes, I think this is ill-formed (although the standard is very unclear about
this). I think the declaration

  template<typename T> friend void freeList<T, baz>::foo();

would declare the member 'foo' of the class template partial specialization
freeList<T, baz> to be a friend, but no such partial specialization has been
defined. If I add

  class baz;
  template<typename T> class freeList<T, baz> { void foo(); };

before the definition of 'baz', then GCC and EDG accept, which I think is
correct behavior.

Reply via email to