friend constexpr bool operator==(pointer_tag_pair lhs, pointer_tag_pair rhs)
noexcept requires equality_comparable<tag_type>; // (1) C++29
概要
pointer_tag_pairオブジェクトの等値比較を行う。ポインタ値とタグ値の両方が等値である場合にtrueとなる。
テンプレートパラメータ制約
tag_typeがequality_comparableのモデルであること
効果
以下と等価である。
return pair(lhs.pointer(), lhs.tag()) == pair(rhs.pointer(), rhs.tag());
例外
投げない。
備考
- タグの比較に組み込みの
==が使われる場合、実装は内部のビット表現を直接比較することが推奨される operator==により、operator!=も使用可能になる
例
#include <memory>
#include <iostream>
int main()
{
int x = 42;
std::pointer_tag_pair<int*, 1, bool> p{&x, true};
std::pointer_tag_pair<int*, 1, bool> q{&x, false};
// ポインタは同じだがタグが異なるため等値ではない
std::cout << std::boolalpha << (p == q) << std::endl;
}
出力
false
バージョン
言語
- C++29
処理系
- Clang: ??
- GCC: ??
- Visual C++: ??