23 General utilities library [utilities]

23.6 Optional objects [optional]

23.6.10 Hash support [optional.hash]

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

Специализация hash<optional<T>> включена ([unord.hash]) тогда и только тогда, когда hash<remove_­const_­t<T>> она включена. Когда включено, для объекта o типа optional<T>if bool(o) == true, then hash<optional<T>>()(o) должно оцениваться с тем же значением, что и hash<remove_­const_­t<T>>()(*o); в противном случае он принимает неопределенное значение. Функции-члены не гарантируются noexcept.