operator==, operator<=>(std::basic_stacktrace)
From cppreference.com
< cpp | utility | basic stacktrace
| template< class Allocator2 > friend bool operator==( const basic_stacktrace& lhs, |
(1) | (C++23から) |
| template< class Allocator2 > friend std::strong_ordering |
(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)
if (auto cmp = lhs.size() <=> rhs.size(); cmp != 0)
return cmp;
else
return std::lexicographical_compare_three_way(lhs.begin(), lhs.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 のサイズに線形時間。
[編集] 例
| このセクションは未完成です 理由: 例がありません |