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/w/cpp/utility/basic_stacktrace/operator_cmp