operator==, operator<=>(std::basic_stacktrace)

来自cppreference.com
 
 
 
 
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) 检查 lhsrhs 的内容是否相等,即它们拥有相同元素数且 lhs 中的元素比较等于 rhs 中相同位置的元素。
等价于 return std::equal(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
2) 返回 lhsrhs 中的栈踪条目数的相对顺序,若它们不相等。否则(若 lhsrhs 的元素数相等),则返回 lhsrhs 的元素的字典序。
等价于
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)lhsrhs 的内容相等则为 true ,否则为 false
2) lhs.size() <=> rhs.size() ,若结果不是 std::strong_order::equal ,否则为 lhsrhs 的元素的字典序。

复杂度

1-2)lhsrhs 大小不同则为常数,否则与 lhs 的大小成线性。

示例