operator==,!=,<,<=,>,>=,<=>(std::basic_string_view)
| Definido en el encabezado <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) | (desde C++17) (hasta 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;
|
(desde 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) | (desde C++17) (hasta 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) | (desde C++17) (hasta 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) | (desde C++17) (hasta 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) | (desde C++17) (hasta 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) | (desde C++17) (hasta 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) | (desde C++20) |
Compara dos vistas.
Todas las comparaciones se realizan mediante la función miembro compare() (la cual a su vez se define en términos de Traits::compare()):
- Dos vistas son iguales si tanto el tamaño de
lhscomo el derhsson iguales y cada carácter enlhstiene un carácter equivalente enrhsen la misma posición.
- Las comparaciones de orden se realizan lexicográficamente – la comparación se realiza mediante una función equivalente a std::lexicographical_compare.
|
La implementación proporciona suficientes sobrecargas adicionales de |
(hasta C++20) |
|
El tipo de retorno de los operadores de comparación de tres vías ( Los operadores |
(desde C++20) |
Parámetros
| lhs, rhs | - | vistas a comparar |
Valor de retorno
Complejidad
Lineal en el tamaño de las vistas.
Notas
|
Se pueden implementar sobrecargas adicionales suficientes mediante contexto no deducido en un tipo de parámetro. |
(until C++20) |
|
El tipo de resultado de comparación de tres vías de std::string_view , std::wstring_view , std::u8string_view , std::u16string_view y std::u32string_view es std::strong_ordering . std::type_identity_t se utiliza para contexto no deducido, lo que hace que los argumentos que son implícitamente convertibles al tipo string view sean comparables con el string view. |
(since C++20) |
Ejemplo
#include <string_view> int main() { using namespace std::literals; static_assert(""sv == ""sv); static_assert(""sv == "", "Selects an additional overload until C++20."); static_assert("" == ""sv, "Selects an additional overload until C++20." "Uses a rewritten candidate since C++20."); static_assert(!(""sv != ""sv), "Uses the rewritten candidate since C++20."); static_assert(!(""sv != ""), "Selects an additional overload until C++20;" "Uses a rewritten candidate since C++20."); static_assert(!("" != ""sv), "Selects an additional overload until C++20." "Uses a rewritten candidate since C++20."); }
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 3432 | C++20 |
el tipo de retorno de
operator<=>
no estaba requerido que fuera un tipo de categoría de comparación
|
requerido |
| LWG 3950 | C++20 | aún se requerían sobrecargas adicionales redundantes | conjuntos de sobrecarga reducidos |