◐ Shell
clean mode source ↗

operator==, operator<=>(std::basic_stacktrace) — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

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());.

Эти функции template не видны обычному неквалифицированному или квалифицированному поиску и могут быть найдены только с помощью зависящего от аргумента поиска, когда 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 иначе.

Пример