https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97773
--- Comment #13 from Jonathan Wakely <redi at gcc dot gnu.org> --- I think it's just a dup of PR 82099. Reduced further to only use C++14 template <typename T> struct hash { int operator()(T) const noexcept { return 0; } }; template <typename T> int hash_combine(T v) noexcept(noexcept(hash<T>()(v))) { return 0; } template<typename F, typename T> auto apply(F& f, T t) { return f(t); } auto x = apply(hash_combine<int>, 0);