operator==,!=,<,<=,>,>=,<=>(std::basic_string_view)
| Défini dans l'en-tête <string_view>
|
||
template< class CharT, class Traits >
constexpr bool operator==( std::basic_string_view<CharT,Traits> lhs,
std::basic_string_view<CharT,Traits> rhs ) noexcept;
|
(1) | (depuis C++17) (jusqu'à C++20) |
template< class CharT, class Traits >
constexpr bool operator==(
std::basic_string_view<CharT,Traits> lhs,
std::type_identity_t<std::basic_string_view<CharT,Traits>> rhs ) noexcept;
|
(depuis C++20) | |
template< class CharT, class Traits >
constexpr bool operator!=( std::basic_string_view<CharT,Traits> lhs,
std::basic_string_view<CharT,Traits> rhs ) noexcept;
|
(2) | (depuis C++17) (jusqu'à C++20) |
template< class CharT, class Traits >
constexpr bool operator<( std::basic_string_view<CharT,Traits> lhs,
std::basic_string_view<CharT,Traits> rhs ) noexcept;
|
(3) | (depuis C++17) (jusqu'à C++20) |
template< class CharT, class Traits >
constexpr bool operator<=( std::basic_string_view<CharT,Traits> lhs,
std::basic_string_view<CharT,Traits> rhs ) noexcept;
|
(4) | (depuis C++17) (jusqu'à C++20) |
template< class CharT, class Traits >
constexpr bool operator>( std::basic_string_view<CharT,Traits> lhs,
std::basic_string_view<CharT,Traits> rhs ) noexcept;
|
(5) | (depuis C++17) (jusqu'à C++20) |
template< class CharT, class Traits >
constexpr bool operator>=( std::basic_string_view<CharT,Traits> lhs,
std::basic_string_view<CharT,Traits> rhs ) noexcept;
|
(6) | (depuis C++17) (jusqu'à C++20) |
template< class CharT, class Traits >
constexpr /*comp-cat*/ operator<=>(
std::basic_string_view<CharT,Traits> lhs,
std::type_identity_t<std::basic_string_view<CharT,Traits>> rhs ) noexcept;
|
(7) | (depuis C++20) |
Compare deux vues.
Toutes les comparaisons sont effectuées via la fonction membre compare() (qui elle-même est définie en termes de Traits::compare()):
- Deux vues sont égales si la taille de
lhsetrhssont toutes deux égales et si chaque caractère delhsa un caractère équivalent dansrhsà la même position.
- Les comparaisons d'ordre sont effectuées lexicographiquement – la comparaison est effectuée par une fonction équivalente à std::lexicographical_compare.
|
L'implémentation fournit suffisamment de surcharges supplémentaires |
(jusqu'à C++20) |
|
Le type de retour des opérateurs de comparaison à trois voies ( Les opérateurs |
(depuis C++20) |
Paramètres
| lhs, rhs | - | vues à comparer |
Valeur de retour
Complexité
Linéaire dans la taille des vues.
Notes
|
Des surcharges supplémentaires suffisantes peuvent être implémentées via un contexte non déduit dans un type de paramètre. |
(until C++20) |
|
Le type de résultat de comparaison à trois voies de std::string_view , std::wstring_view , std::u8string_view , std::u16string_view et std::u32string_view est std::strong_ordering . std::type_identity_t est utilisé pour le contexte non déduit, ce qui rend les arguments implicitement convertibles au type string view comparables avec le string view. |
(since C++20) |
Exemple
#include <string_view> int main() { using namespace std::literals; static_assert(""sv == ""sv); static_assert(""sv == "", "Sélectionne une surcharge supplémentaire jusqu'à C++20."); static_assert("" == ""sv, "Sélectionne une surcharge supplémentaire jusqu'à C++20." "Utilise un candidat réécrit depuis C++20."); static_assert(!(""sv != ""sv), "Utilise le candidat réécrit depuis C++20."); static_assert(!(""sv != ""), "Sélectionne une surcharge supplémentaire jusqu'à C++20;" "Utilise un candidat réécrit depuis C++20."); static_assert(!("" != ""sv), "Sélectionne une surcharge supplémentaire jusqu'à C++20." "Utilise un candidat réécrit depuis C++20."); }
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 3432 | C++20 |
le type de retour de
operator<=>
n'était pas requis d'être un type de catégorie de comparaison
|
requis |
| LWG 3950 | C++20 | des surcharges supplémentaires redondantes étaient encore requises | ensembles de surcharges réduits |