std:: owner_less
|
Definiert im Header
<memory>
|
||
| (1) | ||
|
template
<
class
T
>
struct owner_less ; /* undefined */ |
(seit C++11)
(bis C++17) |
|
|
template
<
class
T
=
void
>
struct owner_less ; /* undefined */ |
(seit C++17) | |
|
template
<
class
T
>
struct owner_less < std:: shared_ptr < T >> ; |
(2) | (seit C++11) |
|
template
<
class
T
>
struct owner_less < std:: weak_ptr < T >> ; |
(3) | (seit C++11) |
|
template
<>
struct owner_less < void > ; |
(4) | (seit C++17) |
Dieses Funktionsobjekt bietet eine besitzerbasierte (im Gegensatz zu wertbasierter) gemischttypige Ordnung sowohl für
std::weak_ptr
als auch für
std::shared_ptr
. Die Ordnung ist so definiert, 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).
Der Standard- operator < ist nicht für schwache Zeiger definiert und könnte fälschlicherweise zwei Shared Pointer für dasselbe Objekt als nicht äquivalent betrachten (siehe std::shared_ptr::owner_before ).
Spezialisierungen
Die Standardbibliothek stellt eine Spezialisierung von
|
(seit C++17) |
Verschachtelte Typen
|
(bis C++20) |
Memberfunktionen
|
operator()
|
vergleicht seine Argumente unter Verwendung besitzerbasierter Semantik
(Funktion) |
std::owner_less:: operator()
|
Nur Mitglied der Spezialisierung
(2)
|
||
|
bool
operator
(
)
(
const
std::
shared_ptr
<
T
>
&
lhs,
const std:: shared_ptr < T > & rhs ) const noexcept ; |
(seit C++11) | |
|
Nur Mitglied der Spezialisierung
(3)
|
||
|
bool
operator
(
)
(
const
std::
weak_ptr
<
T
>
&
lhs,
const std:: weak_ptr < T > & rhs ) const noexcept ; |
(seit C++11) | |
|
Mitglied beider Template-Spezialisierungen
|
||
|
bool
operator
(
)
(
const
std::
shared_ptr
<
T
>
&
lhs,
const std:: weak_ptr < T > & rhs ) const noexcept ; |
(seit C++11) | |
|
bool
operator
(
)
(
const
std::
weak_ptr
<
T
>
&
lhs,
const std:: shared_ptr < T > & rhs ) const noexcept ; |
(seit C++11) | |
Vergleicht lhs und rhs unter Verwendung besitzerbasierter Semantik. Ruft effektiv lhs. owner_before ( rhs ) auf.
Die Ordnung ist eine strenge schwache Ordnungsrelation.
lhs und rhs sind nur dann äquivalent, wenn beide leer sind oder Besitz teilen.
Parameter
| lhs, rhs | - | Shared-Ownership-Zeiger zum Vergleichen |
Rückgabewert
true wenn lhs gemäß der besitzerbasierten Ordnung kleiner als rhs ist, false andernfalls.
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2873 | C++11 | operator ( ) war nicht als noexcept erforderlich | als noexcept erforderlich |
Siehe auch
|
bietet besitzerbasierte Ordnung von Shared Pointern
(öffentliche Elementfunktion von
std::shared_ptr<T>
)
|
|
|
bietet besitzerbasierte Ordnung von Weak Pointern
(öffentliche Elementfunktion von
std::weak_ptr<T>
)
|