https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100003
--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Without the directive: q.C:6:22: error: declaration of ‘S<T>::S() noexcept (T::value)’ has a different exception specifier 6 | template<typename T> S<T>::S() noexcept(T::value) {} | ^~~~ q.C:4:3: note: from previous declaration ‘S<T>::S() noexcept (((S<T>*)this)->S<T>::foo())’ 4 | S() noexcept(foo()); | ^