Issue 3653: is freestanding, but uses std::hash which is not (original) (raw)
This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.
3653. <coroutine> is freestanding, but uses std::hash which is not
Section: 17.13.2 [coroutine.syn] Status: New Submitter: Jonathan Wakely Opened: 2021-12-17 Last modified: 2025-11-11
Priority: 3
View all other issues in [coroutine.syn].
View all issues with New status.
Discussion:
The <coroutine> header is required for freestanding implementations, but it defines a specialization of std::hash, which is not required for freestanding implementations.
Presumably we should make the std::hash specialization conditionally present.
[2022-01-30; Reflector poll]
Set priority to 3 after reflector poll. Would be resolved by P1642 for C++23, but it's still a defect in C++20.
[2025-11-11; Jonathan adds wording for C++20.]
This wording would resolve the defect for C++20, but the issue should be closed as Resolved in C++23.
Proposed resolution:
This wording is relative to ISO/IEC 14882:2020(E).
- Modify 17.13.4.9 [coroutine.handle.hash] as indicated:
template struct hash<coroutine_handle
>;
-1- The specialization is enabled (22.10.19 [unord.hash])in a hosted implementation.