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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |accepts-invalid
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-06-20
     Ever confirmed|0                           |1

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I can't find the relevant standarese but I think the code should be rejected
because the specialization has a weaker exception-specification.

Reduced:

template<typename T> struct X {
  void f() noexcept { }
};

template<> void X<int>::f() { }


EDG says:

"es.cc", line 5: error: allowing all exceptions is incompatible with function
          "X<T>::f" (declared at line 2)
  template<> void X<int>::f() { }
                              ^

1 error detected in the compilation of "es.cc".


Clang says:

es.cc:5:25: error: 'f' is missing exception specification 'noexcept'
template<> void X<int>::f() { }
                        ^
                            noexcept
es.cc:2:8: note: previous declaration is here
  void f() noexcept { }
       ^
1 error generated.

Reply via email to