https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101239
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2021-06-28 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- This slight variation using noexcept in the trailing-return-type was rejects-valid in 4.7 but is ice-on-valid-code from 4.8 onwards (with the same ICE): template<typename T> struct Blerk { template<typename Ptr> static constexpr auto type(Ptr p = Ptr(), int n = 0) -> decltype(noexcept(p[n])) { return false; } template<typename Ptr> static constexpr int type(...) { return 1; } decltype(type<T*>()) f() const; }; struct S; extern Blerk<S[]> p; auto s = p.f(); struct S { };