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