cppreference 中的此页面提到std::hash已专门用于std::optional,但未指定对象脱离时的行为。我可以想到不同的行为:
- 它可以抛出一个
std::bad_optional_access, 以保持一致std::optional::value - 它可以为每个 disengaged 返回相同的哈希
std::optional<T>,这样 2 disengaged 对象将具有相同的哈希。 - 它可以返回一个
std::optional<std::hash<std::optional<T>>>