std::hash
std::hash (std::coroutine_handle 특수화)
std::hash의 std::coroutine_handle<T> 특수화예요. 코루틴 핸들 객체의 해시 값을 얻을 수 있게 해줘요. 해시 기반 컨테이너에 코루틴 핸들을 넣을 수 있게 해줘요. C++20부터 있어요.
출처: cppreference
본문
<coroutine> 헤더에 정의돼 있고, std::hash의 std::coroutine_handle 특수화예요. std::hash<std::coroutine_handle<T>>(및 비-템플릿 형태 std::hash<std::coroutine_handle<>>)가 제공돼요.
이 특수화 덕분에 std::coroutine_handle을 std::unordered_set, std::unordered_map 같은 해시 기반 컨테이너의 키로 사용할 수 있어요. 같은 코루틴을 가리키는 핸들은 같은 해시 값을 가져요.
std::coroutine_handle은 코루틴 프레임을 가리키는 비소유(non-owning) 핸들이에요. 해시는 내부적으로 해당 코루틴 프레임을 가리키는 주소 값을 바탕으로 계산되므로, 같은 프레임을 가리키는 핸들은 동등 비교(==)에서도 같다고 판정되고 해시도 같아요.
일반적으로 코루틴 상태 레지스트리(예: 활성 코루틴들을 추적하는 매핑)에서 코루틴 핸들을 키로 관리할 때 유용해요.