friend constexpr auto operator<=>(pointer_tag_pair lhs, pointer_tag_pair rhs)
noexcept requires three_way_comparable<tag_type>; // (1) C++29
概要
pointer_tag_pairオブジェクトの三方比較を行う。ポインタ値を優先し、次にタグ値を比較する。
テンプレートパラメータ制約
tag_typeがthree_way_comparableのモデルであること
効果
以下と等価である。
return pair(lhs.pointer(), lhs.tag()) <=> pair(rhs.pointer(), rhs.tag());
例外
投げない。
備考
- 関係のないオブジェクトを指すポインタどうしの比較結果は未規定である
- タグの比較に組み込みの
<=>が使われる場合、実装は内部のビット表現を直接比較することが推奨される
例
#include <memory>
#include <iostream>
int main()
{
int arr[2] = {1, 2};
std::pointer_tag_pair<int*, 1> p{&arr[0], 0u};
std::pointer_tag_pair<int*, 1> q{&arr[1], 0u};
std::cout << std::boolalpha << (p < q) << std::endl;
}
出力
true
バージョン
言語
- C++29
処理系
- Clang: ??
- GCC: ??
- Visual C++: ??