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