The following C++ code should not compile: template <class T> void foo(T) throw (int);
template<> void foo (short) throw (short) { } The change in exception specification, the throw, is not been detected. A simple example without templates is rejected correctly. The C++ standard discusses this in clause 15.4/2. -- Summary: Conflicting exception specifications not rejected in template specialization Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: andrew dot stubbs at st dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32081