Namespaces
Variants

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

From cppreference.net
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 в противном случае.

См. CharTraits для общих требований к характеристикам символов для X::eq и X::lt .

Содержание

Параметры

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

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

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

Сложность

Константа.

Отчеты о дефектах

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

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