Spec-Zone.ru › C++

std::char_traits<char>::eq/lt, std::char_traits<wchar_t>::eq/lt, std::char_traits<char8_t>::eq/lt, std::char_traits<char16_t>::eq/lt, std::char_traits<char32_t>::eq/lt

static bool eq( char_type a, char_type b );
(1) (constexpr с C++11)
(noexcept с C++11)
static bool lt( char_type a, char_type b );
(2) (constexpr с C++11)
(noexcept с C++11)

Сравнивает два символа.

1) Сравнивает a и b на равенство; ведёт себя идентично
  • static_cast<unsigned char>(a) == static_cast<unsigned char>(b), если char_type имеет тип char,
  • a == b в противном случае.
2) Сравнивает a и b таким образом, чтобы они были полностью упорядочены; ведёт себя идентично
  • static_cast<unsigned char>(a) < static_cast<unsigned char>(b), если char_type имеет тип char,
  • a < b в противном случае.

Общие требования к traits символов для X::eq и X::lt см. в разделе CharTraits.

Параметры

a, b - сравниваемые значения символов

Возвращаемое значение

1) true, если a и b равны, и false в противном случае.
2) true, если a меньше b, и false в противном случае.

Сложность

Постоянная.

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

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

Отчёт об ошибке Применяется к Опубликованное поведение Корректное поведение
LWG 467 C++98 для std::char_traits<char> семантика eq() и lt()
совпадает с семантикой встроенных == и < для char соответственно[1]
изменено на встроенные == и
< для unsignedchar
  1. Для повышения эффективности большинство реализаций вызывают std::memcmp(), которая интерпретирует данные как массивы unsignedchar. Если в таких реализациях тип char знаковый, std::char_traits<char> не удовлетворяет требованиям CharTraits.

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

Spec-Zone.ru

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