operator==, !=, <, <=, >, >=, <=> (std::optional)
|
Défini dans l'en-tête
<optional>
|
||
|
Compare deux
optional
objets
|
||
|
template
<
class
T,
class
U
>
constexpr bool operator == ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(1) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator ! = ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(2) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator < ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(3) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator <= ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(4) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator > ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(5) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator >= ( const optional < T > & lhs, const optional < U > & rhs ) ; |
(6) | (depuis C++17) |
|
template
<
class
T,
std::
three_way_comparable_with
<
T
>
U
>
constexpr
std::
compare_three_way_result_t
<
T, U
>
|
(7) | (depuis C++20) |
|
Compare un objet
optional
avec un
nullopt
|
||
|
template
<
class
T
>
constexpr bool operator == ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(8) | (depuis C++17) |
|
template
<
class
T
>
constexpr bool operator == ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(9) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator ! = ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(10) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator ! = ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(11) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator < ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(12) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator < ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(13) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator <= ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(14) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator <= ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(15) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator > ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(16) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator > ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(17) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator >= ( const optional < T > & opt, std:: nullopt_t ) noexcept ; |
(18) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr bool operator >= ( std:: nullopt_t , const optional < T > & opt ) noexcept ; |
(19) |
(depuis C++17)
(jusqu'à C++20) |
|
template
<
class
T
>
constexpr
std::
strong_ordering
|
(20) | (depuis C++20) |
|
Compare un objet
optional
avec une valeur
|
||
|
template
<
class
T,
class
U
>
constexpr bool operator == ( const optional < T > & opt, const U & value ) ; |
(21) | (depuis C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator == ( const U & value, const optional < T > & opt ) ; |
(22) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator ! = ( const optional < T > & opt, const U & value ) ; |
(23) | (depuis C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator ! = ( const U & value, const optional < T > & opt ) ; |
(24) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator < ( const optional < T > & opt, const U & value ) ; |
(25) | (depuis C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator < ( const U & value, const optional < T > & opt ) ; |
(26) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator <= ( const optional < T > & opt, const U & value ) ; |
(27) | (depuis C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator <= ( const U & value, const optional < T > & opt ) ; |
(28) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator > ( const optional < T > & opt, const U & value ) ; |
(29) | (depuis C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator > ( const U & value, const optional < T > & opt ) ; |
(30) | (depuis C++17) |
|
template
<
class
T,
class
U
>
constexpr bool operator >= ( const optional < T > & opt, const U & value ) ; |
(31) | (depuis C++17) |
|
template
<
class
U,
class
T
>
constexpr bool operator >= ( const U & value, const optional < T > & opt ) ; |
(32) | (depuis C++17) |
|
template
<
class
T,
std::
three_way_comparable_with
<
T
>
U
>
constexpr
std::
compare_three_way_result_t
<
T, U
>
|
(33) | (depuis C++20) |
Effectue des opérations de comparaison sur
optional
objets.
optional
,
lhs
et
rhs
. Les valeurs contenues sont comparées (en utilisant l'opérateur correspondant de
T
) uniquement si
lhs
et
rhs
contiennent tous deux des valeurs. Sinon,
- lhs est considéré égal à rhs si, et seulement si, lhs et rhs ne contiennent pas de valeur.
- lhs est considéré inférieur à rhs si, et seulement si, rhs contient une valeur et lhs n'en contient pas.
|
Si l'expression correspondante * lhs @ * rhs est mal formée ou si son résultat n'est pas convertible en bool , le programme est mal formé. |
(jusqu'à C++26) |
|
Cette surcharge participe à la résolution de surcharge uniquement si l'expression correspondante * lhs @ * rhs est bien formée et si son résultat est convertible en bool . |
(depuis C++26) |
nullopt
. Équivalent à
(1-6)
lors de la comparaison avec un
optional
qui ne contient pas de valeur.
|
Les opérateurs
|
(depuis C++20) |
T
) uniquement si
opt
contient une valeur. Sinon,
opt
est considéré comme
inférieur à
value
.
|
Si l'expression correspondante * opt @ value ou value @ * opt (selon la position des opérandes) est mal formée ou si son résultat n'est pas convertible en bool , le programme est mal formé. |
(jusqu'à C++26) |
|
Cette surcharge participe à la résolution de surcharge seulement si toutes les conditions suivantes sont satisfaites :
|
(depuis C++26) |
Table des matières |
Paramètres
| lhs, rhs, opt | - |
un objet
optional
à comparer
|
| value | - | valeur à comparer avec la valeur contenue |
Valeur de retour
( lhs. has_value ( ) == false ? true : * lhs == * rhs )
( lhs. has_value ( ) == false ? false : * lhs ! = * rhs )
` pour le code C++. Seul le numéro "32)" a été conservé tel quel car il fait partie de la numérotation et ne nécessite pas de traduction.
Exceptions
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_constrained_equality
|
202403L
|
(C++26) | opérateurs de comparaison contraints pour std::optional |
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 | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2945 | C++17 | ordre des paramètres de template incohérent pour les cas de comparaison-avec-T | rendu cohérent |