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)
Défini dans l'en-tête <memory>
struct owner_equal ;
(depuis C++26)

Ce foncteur fournit une comparaison d'égalité de type mixte basée sur la propriété (par opposition à une comparaison basée sur la valeur) pour std::weak_ptr et std::shared_ptr . La comparaison est telle que deux pointeurs intelligents sont équivalents seulement s'ils sont tous deux vides ou s'ils partagent la propriété, même si les valeurs des pointeurs bruts obtenus par get() sont différentes (par exemple parce qu'ils pointent vers différents sous-objets au sein du même objet).

1) La comparaison d'égalité mixte basée sur le propriétaire n'est pas fournie pour les types autres que std::shared_ptr et std::weak_ptr .
2) La comparaison d'égalité de type mixte basée sur le propriétaire de std::shared_ptr et std::weak_ptr .
C'est le prédicat de comparaison privilégié lors de la construction de conteneurs associatifs non ordonnés avec std::shared_ptr et std::weak_ptr comme clés conjointement avec std::owner_hash , c'est-à-dire, std:: unordered_map < std:: shared_ptr < T > , U, std :: owner_hash , std :: owner_equal > ou std:: unordered_map < std:: weak_ptr < T > , U, std :: owner_hash , std :: owner_equal > .
3) std::owner_equal déduit les types de paramètres à partir des arguments.

Table des matières

Types imbriqués

Type imbriqué Définition
is_transparent unspecified

Fonctions membres

operator()
compare ses arguments en utilisant une sémantique basée sur le propriétaire
(fonction)

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

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

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

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

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

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

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

Compare lhs et rhs en utilisant la sémantique basée sur le propriétaire. Appelle effectivement lhs. owner_equal ( rhs ) .

La comparaison d'égalité est une relation d'équivalence.

lhs et rhs sont équivalents seulement s'ils sont tous deux vides ou partagent la propriété.

Paramètres

lhs, rhs - pointeurs à propriété partagée à comparer

Valeur de retour

true si lhs et rhs sont tous deux vides ou partagent la propriété selon la comparaison d'égalité basée sur le propriétaire, false sinon.

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_smart_ptr_owner_equality 202306L (C++26) Permettre l'utilisation de std::shared_ptr et std::weak_ptr comme clés dans les conteneurs associatifs non ordonnés

Voir aussi

fournit une comparaison d'égalité basée sur le propriétaire des pointeurs partagés
(fonction membre publique de std::shared_ptr<T> )
fournit une comparaison d'égalité basée sur le propriétaire des pointeurs faibles
(fonction membre publique de std::weak_ptr<T> )