[util.smartptr.hash] (original) (raw)

20 General utilities library [utilities]

20.11 Smart pointers [smartptr]

20.11.7 Smart pointer hash support [util.smartptr.hash]

template<class T, class D> struct hash<unique_ptr<T, D>>;

Letting UP be unique_­ptr<T,D>, the specialization hash<UP> is enabled ([unord.hash]) if and only if hash<typename UP​::​pointer> is enabled.

When enabled, for an object p of type UP,hash<UP>()(p) evaluates to the same value as hash<typename UP​::​pointer>()(p.get()).

The member functions are not guaranteed to be noexcept.

template<class T> struct hash<shared_ptr<T>>;

For an object p of type shared_­ptr<T>,hash<shared_­ptr<T>>()(p) evaluates to the same value as hash<typename shared_­ptr<T>​::​element_­type*>()(p.get()).