This page từ cppreference đề cập rằng std::hash
đã được chuyên biệt cho std::optional
, nhưng không chỉ định hành vi khi đối tượng được thảnh thơi. Tôi có thể nghĩ đến hành vi khác nhau:Hash của một std thảnh thơi :: tùy chọn <T> đối tượng là gì?
- Nó có thể ném một
std::bad_optional_access
, để phù hợp vớistd::optional::value
- Nó có thể trở lại cùng bảng băm cho mỗi thảnh thơi
std::optional<T>
, cách 2 đối tượng thảnh thơi này sẽ có cùng bảng băm. - Nó có thể trở lại một
std::optional<std::hash<std::optional<T>>>
Điều cuối cùng là vui nhộn, nhưng thực sự không có ý nghĩa: -S Lạ lùng, tuy nhiên, điều này không được chỉ định. Sau đó, một lần nữa, ngôn ngữ chưa được xuất bản. Boost làm như thế nào? –
Lưu ý rằng 'tùy chọn' đã bị xóa khỏi C++ 14. – Simple
@Simple Đó là? Bạn có xảy ra liên kết đến báo cáo với lý do không? Tôi rất muốn biết – nijansen