owner_hash — std::owner_hash
owner_hash — std::owner_hash
std::owner_hash는 std::shared_ptr/std::weak_ptr의 소유권(owner)을 해시하는 함수 객체예요. C++26에서 도입됐어요. <memory> 헤더에 제공돼요.
std::unordered_set<std::shared_ptr<T>> 같은 컨테이너를 만들 때, 값이 아니라 관리 블록(owner) 기준으로 해시를 계산해요. owner_less와 짝을 이루어, 동일한 주소를 가리켜도 관리 블록이 다른 포인터들을 구분할 수 있게 해줘요.
출처: cppreference
본문
std::owner_hash는 공유 포인터를 소유권 기준으로 해시해요.
template<class T = void> struct owner_hash;
shared_ptr나 weak_ptr를 받아 관리 블록(owner)에 대한 해시 값을 반환해요. 소유권 기준 해시는 owner_less와 일관되도록 설계되어, 같은 owner는 같은 해시를 갖고, owner가 다르면 (가능한 한) 다른 해시를 가져요.
이를 owner_less와 함께 사용하면, std::unordered_set/std::unordered_map 등에서 "주소는 같지만 관리 블록이 다른" 포인터들을 구분하는 소유권 기반 해시 컨테이너를 만들 수 있어요. 값 비교 해시(std::hash<shared_ptr>)와는 다른 기준을 사용한다는 점이 핵심이에요.
같이 보기
std::owner_lessstd::owner_equalstd::shared_ptr