Có thực sự là cái gì đó có tham chiếu đến lẽ hiện tượng ngữ nghĩa. Nó được gọi là một con trỏ (const). Một con trỏ không sở hữu cũ. Có ba khác biệt giữa tham chiếu và con trỏ:
- Con trỏ có thể rỗng, tham chiếu không thể. Đây chính xác là sự khác biệt bạn muốn phá vỡ với
std::optional
.
- Con trỏ có thể được chuyển hướng đến điểm khác. Làm cho nó const, và sự khác biệt đó biến mất là tốt.
- Tài liệu tham khảo không cần bị hủy đăng ký bởi
->
hoặc *
. Đây là đường cú pháp thuần túy và có thể vì 1. Và cú pháp con trỏ (dereferencing và convertible to bool) là chính xác những gì std::optional
cung cấp để truy cập vào giá trị và kiểm tra sự hiện diện của nó.
Cập nhật: optional
là một container cho các giá trị. Giống như các vật chứa khác (ví dụ: vector
), nó không phải là được thiết kế để chứa tham chiếu. Nếu bạn muốn tham chiếu tùy chọn, hãy sử dụng con trỏ hoặc nếu bạn thực sự cần một giao diện có cú pháp tương tự là std::optional
, hãy tạo một trình bao bọc nhỏ (và tầm thường) cho con trỏ.
Cập nhật2: Đối với câu hỏi lý do tại sao không có chuyên môn như vậy: bởi vì ủy ban chỉ đơn giản đã chọn không tham gia. Lý do hợp lý có thể được tìm thấy ở đâu đó trong các giấy tờ. Nó có thể là bởi vì họ coi con trỏ là đủ.
Nguồn
2014-11-11 10:29:53
Cuối cùng tôi kết luận rằng tôi có thể sử dụng 'std :: tùy chọn>' cho mục đích của tôi. –
Orient