std::hash

std::hash (std::coroutine_handle 특수화)

std::hashstd::coroutine_handle<T> 특수화예요. 코루틴 핸들 객체의 해시 값을 얻을 수 있게 해줘요. 해시 기반 컨테이너에 코루틴 핸들을 넣을 수 있게 해줘요. C++20부터 있어요.

출처: cppreference

본문

<coroutine> 헤더에 정의돼 있고, std::hashstd::coroutine_handle 특수화예요. std::hash<std::coroutine_handle<T>>(및 비-템플릿 형태 std::hash<std::coroutine_handle<>>)가 제공돼요.

이 특수화 덕분에 std::coroutine_handlestd::unordered_set, std::unordered_map 같은 해시 기반 컨테이너의 키로 사용할 수 있어요. 같은 코루틴을 가리키는 핸들은 같은 해시 값을 가져요.

std::coroutine_handle은 코루틴 프레임을 가리키는 비소유(non-owning) 핸들이에요. 해시는 내부적으로 해당 코루틴 프레임을 가리키는 주소 값을 바탕으로 계산되므로, 같은 프레임을 가리키는 핸들은 동등 비교(==)에서도 같다고 판정되고 해시도 같아요.

일반적으로 코루틴 상태 레지스트리(예: 활성 코루틴들을 추적하는 매핑)에서 코루틴 핸들을 키로 관리할 때 유용해요.

더 알아보기 (Learn more)

cppreference