std::weak_ptr<T>::owner_equal
template< class Y > constexpr bool owner_equal( const std::weak_ptr<Y>& other ) const noexcept; | (1) | (начиная с C++26) |
template< class Y > constexpr bool owner_equal( const std::shared_ptr<Y>& other ) const noexcept; | (2) | (начиная с C++26) |
Проверяет, имеют ли этот weak_ptr и other общего владельца или являются ли они оба пустыми. Сравнение устроено так, что два интеллектуальных указателя считаются эквивалентными только в том случае, если они оба пусты или если оба владеют одним и тем же объектом, даже если значения указателей, полученных с помощью get(), различаются (например, потому что они указывают на разные подобъекты одного и того же объекта).
Функция-член owner_equal задаёт отношение эквивалентности, такое что !owner_before(other) && !other.owner_before(*this) является true тогда и только тогда, когда owner_equal(other) является true.
Это отношение используется, чтобы указатели shared и weak можно было использовать в качестве ключей в неупорядоченных ассоциативных контейнерах, обычно посредством std::owner_equal.
Параметры
| other | - | std::shared_ptr или std::weak_ptr для сравнения |
Возвращаемое значение
true, если *this и other имеют общего владельца или оба пусты. В противном случае возвращает false.
Примечания
| Макрос для проверки поддержки возможности | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_smart_ptr_owner_equality | 202306L | (C++26) | Возможность использовать std::weak_ptr в качестве ключей в неупорядоченных ассоциативных контейнерах |
Пример
См. также
|
(C++26) | выполняет сравнение указателей shared и weak по владению с поддержкой разных типов (класс) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/weak_ptr/owner_equal