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

Patrick Palka <ppalka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ppalka at gcc dot gnu.org

--- Comment #5 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Some further interesting examples:

struct A {
  template<class T, int=42> struct B;
  template<class T> struct B<T> { };     // #1
  template<class T> struct B<T, 42> { }; // #2
};

Presumably we should continue to diagnose that #2 is a redefinition of #1.


And for class-scope explicit specializations (which GCC doesn't yet support):

struct A {
  template<class T, int=T::value> void f();  // #1
  template<class T> void f();                // #2
  template<> void f<int>();                  // #3, specialization of #2
};

The above testcase was valid before P1787, is it still so?

Reply via email to