owner_equal — std::owner_equal
owner_equal — std::owner_equal
std::owner_equal는 std::shared_ptr/std::weak_ptr의 소유권(owner)이 같은지 비교하는 함수 객체예요. C++26에서 도입됐어요. <memory> 헤더에 제공돼요.
두 공유 포인터가 같은 관리 블록(control block)을 공유하는지(즉, 같은 소유권을 가지는지)를 판별해요. owner_less·owner_hash와 함께 소유권 기반의 해시 컨테이너를 구성할 수 있게 해줘요.
출처: cppreference
본문
std::owner_equal는 공유 포인터들의 소유권 동등성을 비교해요.
template<class T = void> struct owner_equal;
두 shared_ptr(또는 weak_ptr)이 같은 소유권(같은 관리 블록)을 가지면 true, 그렇지 않으면 false를 반환해요. 값 비교(get()이 같은지)와 달리, 객체의 주소가 같아도 관리 블록이 다르면 false가 돼요.
owner_hash와 owner_equal을 짝으로 쓰면, std::unordered_set/std::unordered_map에 소유권 기준의 동등성·해시를 적용할 수 있어요. 이는 "alias" 상태(여러 관리 블록이 같은 객체를 가리키는 경우)를 구분해야 하는 코드에서 유용해요.
같이 보기
std::owner_hashstd::owner_lessstd::shared_ptr