Namespaces
Variants
Views
Actions

std::hash<std::indirect>

From cppreference.com
< cpp‎ | memory‎ | indirect
 
 
Memory management library
(exposition only*)
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
(until C++20*)
(until C++20*)

Garbage collector support (until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
 
 
Defined in header <memory>
template< class T, class Allocator >
struct hash<std::indirect<T, Allocator>>;
(since C++26)

The partial specialization of std::hash for std::indirect allows users to obtain hashes of the objects owned by indirect objects.

The specialization std::hash<std::indirect<T, Allocator>> is enabled if std::hash<T> is enabled, and is disabled otherwise.

When enabled, for an object obj of type std::indirect<T, Allocator>, std::hash<std::indirect<T, Allocator>>()(obj) evaluates to:

  • std::hash<T>()(*obj), if obj is not valueless.
  • An implementation-defined value, if obj is valueless.

The member functions of this specialization are not guaranteed to be noexcept because the hash of T might throw.

[edit] Example

[edit] See also

(C++11)
hash function object
(class template) [edit]