std:: owner_less
|
Défini dans l'en-tête
<memory>
|
||
| (1) | ||
|
template
<
class
T
>
struct owner_less ; /* indéfini */ |
(depuis C++11)
(jusqu'à C++17) |
|
|
template
<
class
T
=
void
>
struct owner_less ; /* indéfini */ |
(depuis C++17) | |
|
template
<
class
T
>
struct owner_less < std:: shared_ptr < T >> ; |
(2) | (depuis C++11) |
|
template
<
class
T
>
struct owner_less < std:: weak_ptr < T >> ; |
(3) | (depuis C++11) |
|
template
<>
struct owner_less < void > ; |
(4) | (depuis C++17) |
Cet objet fonction fournit un ordonnancement mixte basé sur le propriétaire (par opposition à un ordonnancement basé sur la valeur) pour
std::weak_ptr
et
std::shared_ptr
. L'ordre est tel 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).
L'opérateur par défaut operator < n'est pas défini pour les pointeurs faibles, et pourrait considérer à tort deux pointeurs partagés pour le même objet comme non équivalents (voir std::shared_ptr::owner_before ).
Spécialisations
La bibliothèque standard fournit une spécialisation de
|
(depuis C++17) |
Types imbriqués
|
(jusqu'en C++20) |
Fonctions membres
|
operator()
|
compare ses arguments en utilisant une sémantique basée sur le propriétaire
(fonction) |
std::owner_less:: operator()
|
membre uniquement de la spécialisation
(2)
|
||
|
bool
operator
(
)
(
const
std::
shared_ptr
<
T
>
&
lhs,
const std:: shared_ptr < T > & rhs ) const noexcept ; |
(depuis C++11) | |
|
membre uniquement de la spécialisation
(3)
|
||
|
bool
operator
(
)
(
const
std::
weak_ptr
<
T
>
&
lhs,
const std:: weak_ptr < T > & rhs ) const noexcept ; |
(depuis C++11) | |
|
membre des deux spécialisations de modèle
|
||
|
bool
operator
(
)
(
const
std::
shared_ptr
<
T
>
&
lhs,
const std:: weak_ptr < T > & rhs ) const noexcept ; |
(depuis C++11) | |
|
bool
operator
(
)
(
const
std::
weak_ptr
<
T
>
&
lhs,
const std:: shared_ptr < T > & rhs ) const noexcept ; |
(depuis C++11) | |
Compare lhs et rhs en utilisant la sémantique basée sur le propriétaire. Appelle effectivement lhs. owner_before ( rhs ) .
L'ordre est une relation d'ordre faible strict.
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 est inférieur à rhs selon l'ordre basé sur le propriétaire, false sinon.
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2873 | C++11 | operator ( ) n'était pas requis d'être noexcept | requis d'être noexcept |
Voir aussi
|
fournit un ordonnancement basé sur le propriétaire des pointeurs partagés
(fonction membre publique de
std::shared_ptr<T>
)
|
|
|
fournit un ordonnancement basé sur le propriétaire des pointeurs faibles
(fonction membre publique de
std::weak_ptr<T>
)
|