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)
Definiert im Header <memory>
struct owner_equal ;
(seit C++26)

Dieses Funktionsobjekt bietet eine besitzerbasierte (im Gegensatz zu wertbasierter) gemischttypige Gleichheitsprüfung für sowohl std::weak_ptr als auch std::shared_ptr . Der Vergleich erfolgt so, dass zwei Smart Pointer nur dann als äquivalent betrachtet werden, wenn sie beide leer sind oder wenn sie sich den Besitz teilen, selbst wenn die Werte der Rohzeiger, die durch get() erhalten werden, unterschiedlich sind (z.B. weil sie auf verschiedene Unterobjekte innerhalb desselben Objekts zeigen).

1) Owner-basierte Mixed-Type-Gleichheitsvergleiche werden für andere Typen als std::shared_ptr und std::weak_ptr nicht bereitgestellt.
2) Die besitzerbasierte gemischte Typ-Gleichheitsvergleiche von std::shared_ptr und std::weak_ptr .
Es ist das bevorzugte Vergleichsprädikat beim Erstellen ungeordneter assoziativer Container mit std::shared_ptr und std::weak_ptr als Schlüsseln zusammen mit std::owner_hash , das heißt, std:: unordered_map < std:: shared_ptr < T > , U, std :: owner_hash , std :: owner_equal > oder std:: unordered_map < std:: weak_ptr < T > , U, std :: owner_hash , std :: owner_equal > .
3) std::owner_equal leitet die Parametertypen aus den Argumenten ab.

Inhaltsverzeichnis

Verschachtelte Typen

Geschachtelter Typ Definition
is_transparent unspecified

Memberfunktionen

operator()
vergleicht seine Argumente unter Verwendung besitzerbasierter Semantik
(Funktion)

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

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

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

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

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

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

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

Vergleicht lhs und rhs unter Verwendung von besitzerbasierter Semantik. Effektiv wird lhs. owner_equal ( rhs ) aufgerufen.

Der Gleichheitsvergleich ist eine Äquivalenzrelation.

lhs und rhs sind nur dann äquivalent, wenn sie beide leer sind oder Besitz teilen.

Parameter

lhs, rhs - Shared-Ownership-Zeiger zum Vergleichen

Rückgabewert

true wenn lhs und rhs beide leer sind oder Besitz teilen, wie durch den besitzbasierten Gleichheitsvergleich bestimmt, false andernfalls.

Hinweise

Feature-Test Makro Wert Std Funktion
__cpp_lib_smart_ptr_owner_equality 202306L (C++26) Ermöglicht die Verwendung von std::shared_ptr und std::weak_ptr als Schlüssel in ungeordneten assoziativen Containern

Siehe auch

bietet besitzerbasierte Gleichheitsvergleiche von Shared Pointern
(öffentliche Elementfunktion von std::shared_ptr<T> )
bietet besitzerbasierte Gleichheitsvergleiche von Weak Pointern
(öffentliche Elementfunktion von std::weak_ptr<T> )