od cppreference wspomina, że std::hash
specjalizuje się w std::optional
, ale nie określa zachowania, gdy obiekt jest wyłączony. Mogę myśleć o różnych zachowań:Co to jest skrót od wyłączonego obiektu std :: optional <T>?
- To może rzucić
std::bad_optional_access
, aby były zgodne zstd::optional::value
- To może wrócić ten sam hash dla każdego odłączonym
std::optional<T>
, w ten sposób 2 odłączony obiekt miałby taki sam hash. - Może zwróci
std::optional<std::hash<std::optional<T>>>
Ten ostatni jest zabawny, ale w rzeczywistości nie ma sensu: -S Dziwne, ale to nie jest określone. Z drugiej strony język nie jest jeszcze opublikowany. Jak działa Boost? –
Zauważ, że 'opcjonalny' został usunięty z C++ 14. – Simple
@ Simple To było? Czy zdarza Ci się mieć link do raportu z uzasadnieniem? Chciałbym wiedzieć, że – nijansen