Skip to content

Latest commit

 

History

History
66 lines (48 loc) · 1.56 KB

File metadata and controls

66 lines (48 loc) · 1.56 KB

hash

  • memory[meta header]
  • std[meta namespace]
  • indirect[meta class]
  • class template[meta id-type]
  • cpp26[meta cpp]
namespace std {
  template <class T, class Allocator>
  struct hash<indirect<T, Allocator>>;
}
  • hash[link /reference/functional/hash.md]

概要

std::hashクラスの、std::indirectに対する特殊化。

この特殊化は、hash<T>が有効である場合にのみ有効となる。

効果

indirect<T, Allocator>型のオブジェクトiに対して、hash<indirect<T, Allocator>>()(i)は、iが無効値状態でなければhash<T>()(*i)と同じ値を返し、無効値状態であれば処理系定義の値を返す。

備考

メンバ関数がnoexceptである保証はない。

#include <cassert>
#include <functional>
#include <memory>

int main()
{
  std::indirect<int> a{42};
  // 所有する値のハッシュ値と一致する
  assert((std::hash<std::indirect<int>>{}(a) == std::hash<int>{}(42)));
}
  • std::indirect[color ff0000]
  • std::hash[link /reference/functional/hash.md]

出力

バージョン

言語

  • C++26

処理系

  • Clang: 22 [mark noimpl]
  • GCC: 16.1 [mark verified]
  • Visual C++: 2026 Update 2 [mark noimpl]

関連項目

参照