Spec-Zone.ru › C++

operator==,!=,<,<=,>,>=,<=>(std::basic_string_view)

Определено в заголовочном файле <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) (с C++17)
template< class CharT, class Traits >
constexpr bool operator!=( std::basic_string_view<CharT,Traits> lhs, 
                           std::basic_string_view<CharT,Traits> rhs ) noexcept;
(2) (с C++17)
(до 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) (с C++17)
(до 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) (с C++17)
(до 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) (с C++17)
(до 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) (с C++17)
(до C++20)
template< class CharT, class Traits >
constexpr /*comp-cat*/
    operator<=>( std::basic_string_view<CharT,Traits> lhs, 
                 std::basic_string_view<CharT,Traits> rhs ) noexcept;
(7) (с C++20)

Сравнивает две представленные структуры.

Все сравнения выполняются с помощью функции-члена compare() (которая сама определяется с использованием Traits::compare()) :

  • Две представленные структуры равны, если оба размера lhs и rhs равны и каждый символ в lhs имеет эквивалентный символ в rhs на той же позиции.
  • Сравнения по порядку выполняются лексикографически — сравнение выполняется функцией, эквивалентной std::lexicographical_compare.

Тип возвращаемого значения операторов трехстороннего сравнения (/*comp-cat*/) — Traits::comparison_category, если данное квалифицированное имя обозначает тип, std::weak_ordering в противном случае. Если /*comp-cat*/ не является типом категории сравнения, программа является некорректной.

Операторы <, <=, >, >=, и != синтезируются из операторов <=> и == соответственно.

(с C++20)

Реализация должна предоставить достаточное количество дополнительных перегрузок constexpr и noexcept этих функций, чтобы объект basic_string_view<CharT,Traits> sv мог быть сравнен с другим объектом t с неявным преобразованием в basic_string_view<CharT,Traits>, с семантикой, идентичной сравнению sv и basic_string_view<CharT,Traits>(t).

Параметры

lhs, rhs - сравниваемые представленные структуры

Значение возврата

1-6) true если соответствующее сравнение выполняется, false в противном случае.
7) static_cast</*comp-cat*/>(lhs.compare(rhs) <=> 0).

Сложность

Линейная по размеру представленных структур.

Примечания

Достаточно дополнительных перегрузок можно реализовать с помощью контекста, исключающего вывод, в типе одного параметра.

Тип результата трехстороннего сравнения std::string_view, std::wstring_view, std::u8string_view, std::u16string_view и std::u32string_view — std::strong_ordering.

(с C++20)

Пример

Отчеты об ошибках

Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Правильное поведение
LWG 3432 C++20 тип возвращаемого значения operator<=> не требовался как тип категории сравнения требуется

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/basic_string_view/operator_cmp

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API