This page da cppreference menziona che std::hash
è stato specializzato per , ma non specifica il comportamento quando l'oggetto è disattivato. Mi vengono in mente diversi comportamenti:Qual è l'hash di un oggetto std :: facoltativo <T>?
- Si potrebbe gettare un
std::bad_optional_access
, per essere coerenti constd::optional::value
- Potrebbe restituire lo stesso hash per ogni disimpegnato
std::optional<T>
, questo oggetto disimpegnato modo 2 avrebbe lo stesso hash. - Potrebbe restituire un
L'ultimo è divertente, ma in realtà non ha senso: -S strano, però, che questo non è specificato. Poi di nuovo, la lingua non è ancora stata pubblicata. Come fa Boost a farlo? –
Si noti che 'opzionale' è stato rimosso da C++ 14. – Simple
@Simple Era? Ti capita di avere un link al rapporto con logica? Mi piacerebbe sapere – nijansen