cppreference のこのページstd::hash
には、に特化した言及std::optional
がありますが、オブジェクトが解放されたときの動作は指定されていません。私はさまざまな行動を考えることができます:
std::bad_optional_access
一貫性を保つために、をスローする可能性がありますstd::optional::value
- 解放されたすべての に対して同じハッシュを返すことができ
std::optional<T>
ます。このようにして、解放された 2 つのオブジェクトは同じハッシュを持つことになります。 - それは返すことができます
std::optional<std::hash<std::optional<T>>>