- 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]