最終更新日時:
が更新

履歴 編集

function
<memory>

std::pointer_tag_pair::operator==(C++29)

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となる。

テンプレートパラメータ制約

効果

以下と等価である。

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

処理系

参照