operator==, operator<=>(std::basic_stacktrace)
template< class Allocator2 >
friend bool operator==( const basic_stacktrace& lhs,
const basic_stacktrace<Allocator2>& rhs ) noexcept;
| (1) | (начиная с C++23) |
template< class Allocator2 >
friend std::strong_ordering
operator<=>( const basic_stacktrace& lhs,
const basic_stacktrace<Allocator2>& rhs ) noexcept;
| (2) | (начиная с C++23) |
1) Проверяет, равны ли содержимое
lhs и rhs, то есть имеют ли они одинаковое количество элементов и равен ли каждый элемент в lhs соответствующему элементу в rhs.
Эквивалентно
return std::equal(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());.
2) Возвращает относительный порядок количества записей трассировки стека в
lhs и rhs, если они различаются. Иначе (если количество элементов в lhs и rhs одинаково) возвращает лексикографический порядок элементов lhs и rhs.
Эквивалентно
if (auto cmp = lhs.size() <=> rhs.size(); cmp != 0) return cmp; else return std::lexicographical_compare_three_way(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());. Эти шаблоны функций не видны при обычном неквалифицированном поиске или квалифицированном поиске и могут быть найдены только с помощью поиска, зависящего от аргументов, если std::basic_stacktrace<Allocator> является ассоциированным классом аргументов.
Операторы <, <=, >, >= и != синтезируются соответственно из operator<=> и operator==.
Параметры
| lhs, rhs | - |
basic_stacktraceы, содержимое которых сравнивается |
Возвращаемое значение
1)
true, если содержимое lhs и rhs равно, и false в противном случае.
2)
lhs.size() <=> rhs.size(), если результат не равен std::strong_order::equal; в противном случае — лексикографический порядок элементов lhs и rhs.Сложность
1,2) Постоянная, если
lhs и rhs имеют разный размер; в противном случае линейная относительно размера lhs.Пример
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/basic_stacktrace/operator_cmp