https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103726
--- Comment #20 from Jiang An <de34 at live dot cn> --- (In reply to Jonathan Wakely from comment #11) > I already reported https://cplusplus.github.io/LWG/issue3653 for the > std::hash use in <coroutine>. Removing exceptions, typeinfo and coroutines > is unnecessary and irrelevant to this bug report. Stop using GCC bugzilla > for your off-topic rants about WG21. > > You have been warned several times now. Oh. I think pedantic reading of C++20 wording indicates that std::hash was already made freestanding (by adding of <coroutine>). https://timsong-cpp.github.io/cppwp/n4868/compliance#3 > [...] The other headers listed in this table shall meet the same > requirements as for a hosted implementation. (where <coroutine> is such a header) C++20 [unord.hash]/2 also indicated that std::hash is also available in other headers. https://timsong-cpp.github.io/cppwp/n4868/unord.hash#2 > [...] > Each header that declares the template hash provides enabled > specializations of hash for nullptr_t and all cv-unqualified arithmetic, > enumeration, and pointer types. > [...] So IIUC C++20 wording was consistent here - std::hash was already freestanding in C++20 (although not in C++17) and available in <coroutine> in freestanding mode.