std:: owner_less
|
Definido en el encabezado
<memory>
|
||
| (1) | ||
|
template
<
class
T
>
struct owner_less ; /* undefined */ |
(desde C++11)
(hasta C++17) |
|
|
template
<
class
T
=
void
>
struct owner_less ; /* undefined */ |
(desde C++17) | |
|
template
<
class
T
>
struct owner_less < std:: shared_ptr < T >> ; |
(2) | (desde C++11) |
|
template
<
class
T
>
struct owner_less < std:: weak_ptr < T >> ; |
(3) | (desde C++11) |
|
template
<>
struct owner_less < void > ; |
(4) | (desde C++17) |
Este objeto función proporciona un ordenamiento de tipo mixto basado en propietario (en lugar de basado en valor) tanto para
std::weak_ptr
como para
std::shared_ptr
. El orden es tal que dos punteros inteligentes se comparan equivalentes solo si ambos están vacíos o si comparten la propiedad, incluso si los valores de los punteros en bruto obtenidos mediante
get()
son diferentes (por ejemplo, porque apuntan a diferentes subobjetos dentro del mismo objeto).
El operator < predeterminado no está definido para punteros débiles, y podría considerar incorrectamente que dos punteros compartidos para el mismo objeto no son equivalentes (consulte std::shared_ptr::owner_before ).
Especializaciones
La biblioteca estándar proporciona una especialización de
|
(desde C++17) |
Tipos anidados
|
(hasta C++20) |
Funciones miembro
|
operator()
|
compara sus argumentos usando semántica basada en propietario
(función) |
std::owner_less:: operator()
|
miembro solo de la especialización
(2)
|
||
|
bool
operator
(
)
(
const
std::
shared_ptr
<
T
>
&
lhs,
const std:: shared_ptr < T > & rhs ) const noexcept ; |
(desde C++11) | |
|
miembro solo de la especialización
(3)
|
||
|
bool
operator
(
)
(
const
std::
weak_ptr
<
T
>
&
lhs,
const std:: weak_ptr < T > & rhs ) const noexcept ; |
(desde C++11) | |
|
miembro de ambas especializaciones de plantilla
|
||
|
bool
operator
(
)
(
const
std::
shared_ptr
<
T
>
&
lhs,
const std:: weak_ptr < T > & rhs ) const noexcept ; |
(desde C++11) | |
|
bool
operator
(
)
(
const
std::
weak_ptr
<
T
>
&
lhs,
const std:: shared_ptr < T > & rhs ) const noexcept ; |
(desde C++11) | |
Compara lhs y rhs usando semántica basada en propietario. Efectivamente llama a lhs. owner_before ( rhs ) .
El ordenamiento es una relación de ordenamiento débil estricto.
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 es menor que rhs según lo determinado por el ordenamiento basado en propietario, false en caso contrario.
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2873 | C++11 | operator ( ) no se requería que fuera noexcept | se requiere que sea noexcept |
Véase también
|
proporciona ordenamiento basado en propietario de punteros compartidos
(función miembro pública de
std::shared_ptr<T>
)
|
|
|
proporciona ordenamiento basado en propietario de punteros débiles
(función miembro pública de
std::weak_ptr<T>
)
|