Namespaces
Variants

std:: owner_equal

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Definido en el encabezado <memory>
struct owner_equal ;
(desde C++26)

Este objeto función proporciona una comparación de igualdad de tipos mixtos basada en propietario (en lugar de basada en valor) tanto para std::weak_ptr como para std::shared_ptr . La comparación es tal que dos punteros inteligentes se consideran equivalentes solo si ambos están vacíos o si comparten la propiedad, incluso si los valores de los punteros en crudo obtenidos mediante get() son diferentes (por ejemplo, porque apuntan a diferentes subobjetos dentro del mismo objeto).

1) No se proporciona comparación de igualdad de tipos mixtos basada en el propietario para tipos distintos a std::shared_ptr y std::weak_ptr .
2) La comparación de igualdad de tipo mixto basada en propietario de std::shared_ptr y std::weak_ptr .
Es el predicado de comparación preferido al construir contenedores asociativos no ordenados con std::shared_ptr y std::weak_ptr como claves junto con std::owner_hash , es decir, std:: unordered_map < std:: shared_ptr < T > , U, std :: owner_hash , std :: owner_equal > o std:: unordered_map < std:: weak_ptr < T > , U, std :: owner_hash , std :: owner_equal > .
3) std::owner_equal deduce los tipos de parámetros a partir de los argumentos.

Contenidos

Tipos anidados

Tipo anidado Definición
is_transparent unspecified

Funciones miembro

operator()
compara sus argumentos usando semántica basada en propietario
(función)

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 ;
(desde C++26)
template < class T, class U >

bool operator ( ) ( const std:: shared_ptr < T > & lhs,

const std:: weak_ptr < U > & rhs ) const noexcept ;
(desde C++26)
template < class T, class U >

bool operator ( ) ( const std:: weak_ptr < T > & lhs,

const std:: shared_ptr < U > & rhs ) const noexcept ;
(desde C++26)
template < class T, class U >

bool operator ( ) ( const std:: weak_ptr < T > & lhs,

const std:: weak_ptr < U > & rhs ) const noexcept ;
(desde C++26)

Compara lhs y rhs usando semántica basada en propietario. Efectivamente llama a lhs. owner_equal ( rhs ) .

La comparación de igualdad es una relación de equivalencia.

lhs y rhs son equivalentes solo si ambos están vacíos o comparten propiedad.

Parámetros

lhs, rhs - punteros de propiedad compartida a comparar

Valor de retorno

true si lhs y rhs están ambos vacíos o comparten propiedad según lo determinado por la comparación de igualdad basada en propietario, false en caso contrario.

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_smart_ptr_owner_equality 202306L (C++26) Habilitar el uso de std::shared_ptr y std::weak_ptr como claves en contenedores asociativos no ordenados

Véase también

proporciona comparación de igualdad basada en propietario de punteros compartidos
(función miembro pública de std::shared_ptr<T> )
proporciona comparación de igualdad basada en propietario de punteros débiles
(función miembro pública de std::weak_ptr<T> )