operator==, !=, <, <=, >, >=, <=> (std::optional)
|
Definido en el encabezado
<optional>
|
||
|
Comparar dos objetos
optional
|
||
|
template
<
class
T,
class
U
>
constexpr bool operator == ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(1) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator ! = ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(2) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator < ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(3) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator <= ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(4) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator > ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(5) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator >= ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(6) | (desde C++17) |
|
template
<
class
T,
std::
three_way_comparable_with
<
T
>
U
>
constexpr
std::
compare_three_way_result_t
<
T, U
>
|
(7) | (desde C++20) |
|
Comparar un objeto
optional
con un
nullopt
|
||
|
template
<
class
T
>
constexpr bool operator == ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(8) | (desde C++17) |
|
template
<
class
T
>
constexpr bool operator == ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(9) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator ! = ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(10) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator ! = ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(11) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator < ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(12) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator < ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(13) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator <= ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(14) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator <= ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(15) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator > ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(16) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator > ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(17) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator >= ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(18) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr bool operator >= ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(19) |
(desde C++17)
(hasta C++20) |
|
template
<
class
T
>
constexpr
std::
strong_ordering
|
(20) | (desde C++20) |
|
Comparar un objeto
optional
con un valor
|
||
|
template
<
class
T,
class
U
>
constexpr bool operator == ( const optional < T > & opt, const U & value ) ; |
(21) | (desde C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator == ( const U & value, const optional < T > & opt ) ; |
(22) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator ! = ( const optional < T > & opt, const U & value ) ; |
(23) | (desde C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator ! = ( const U & value, const optional < T > & opt ) ; |
(24) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator < ( const optional < T > & opt, const U & value ) ; |
(25) | (desde C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator < ( const U & value, const optional < T > & opt ) ; |
(26) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator <= ( const optional < T > & opt, const U & value ) ; |
(27) | (desde C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator <= ( const U & value, const optional < T > & opt ) ; |
(28) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator > ( const optional < T > & opt, const U & value ) ; |
(29) | (desde C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator > ( const U & value, const optional < T > & opt ) ; |
(30) | (desde C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator >= ( const optional < T > & opt, const U & value ) ; |
(31) | (desde C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator >= ( const U & value, const optional < T > & opt ) ; |
(32) | (desde C++17) |
|
template
<
class
T,
std::
three_way_comparable_with
<
T
>
U
>
constexpr
std::
compare_three_way_result_t
<
T, U
>
|
(33) | (desde C++20) |
Realiza operaciones de comparación en objetos
optional
.
optional
,
lhs
y
rhs
. Los valores contenidos se comparan (usando el operador correspondiente de
T
) solo si tanto
lhs
como
rhs
contienen valores. En caso contrario,
- lhs se considera igual a rhs si, y solo si, tanto lhs como rhs no contienen un valor.
- lhs se considera menor que rhs si, y solo si, rhs contiene un valor y lhs no lo contiene.
|
Si la expresión correspondiente * lhs @ * rhs está mal formada o su resultado no es convertible a bool , el programa está mal formado. |
(hasta C++26) |
|
Esta sobrecarga participa en la resolución de sobrecarga solo si la expresión correspondiente * lhs @ * rhs está bien formada y su resultado es convertible a bool . |
(desde C++26) |
nullopt
. Equivalente a
(1-6)
cuando se compara con un
optional
que no contiene un valor.
|
Los operadores
|
(since C++20) |
T
) solo si
opt
contiene un valor. De lo contrario,
opt
se considera
menor que
value
.
|
Si la expresión correspondiente * opt @ value o value @ * opt (dependiendo de la posición de los operandos) está mal formada o su resultado no es convertible a bool , el programa está mal formado. |
(hasta C++26) |
|
Esta sobrecarga participa en la resolución de sobrecarga solo si se cumplen todas las siguientes condiciones:
|
(desde C++26) |
Contenidos |
Parámetros
| lhs, rhs, opt | - |
un objeto
optional
para comparar
|
| value | - | valor para comparar con el valor contenido |
Valor de retorno
( lhs. has_value ( ) == false ? true : * lhs == * rhs )
( lhs. has_value ( ) == false ? false : * lhs ! = * rhs )
Excepciones
Notas
| Macro de prueba de características | Valor | Estándar | Característica |
|---|---|---|---|
__cpp_lib_constrained_equality
|
202403L
|
(C++26) | Operadores de comparación restringidos para std::optional |
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 2945 | C++17 | el orden de los parámetros de plantilla es inconsistente para los casos de comparación-con-T | hecho consistente |