23 General utilities library [utilities]

23.11 Smart pointers [smartptr]

23.11.2 Shared-ownership pointers [util.smartptr]

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

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

Позволить UP БЭ unique_­ptr<T,D>, специализация hash<UP> включена ([unord.hash]) , если и только если hash<typename UP​::​pointer> включена. Если эта функция включена, для объекта p типа UP, hash<UP>()(p) должен оценить и то же значение , как hash<typename UP​::​pointer>()(p.get()). Функции-члены не гарантируются noexcept.

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

Для объекта p типа shared_­ptr<T>, hash<shared_­ptr<T>>()(p) должен оценить и то же значение , как hash<typename shared_­ptr<T>​::​element_­type*>()(p.get()).