Làm cách nào để ngăn dòng cuối cùng của mã này được biên dịch?Chuyển đổi tăng :: tùy chọn để bool
#include <boost/optional.hpp>
int main()
{
typedef boost::optional<int> int_opt;
int_opt opt = 0;
bool x = opt; // <- I do not want this to compile
}
Dòng cuối cùng không kiểm tra opt
's chứa giá trị int, nhưng thay vì biên dịch như một loại chuyển đổi đến bool, và dường như không có gì mà người dùng mong muốn.
Thành ngữ bool an toàn có vẻ có liên quan ở đây?
Ý bạn là gì _something like_? Mô tả bằng tiếng Anh những gì bạn muốn. Mã rõ ràng không mô tả những gì bạn muốn. Vậy làm thế nào chúng ta nên biết? – Oswald
bạn không thể, 'boost :: optional' thực thi' toán tử 'và đây là lý do tại sao dòng cuối cùng ở trên biên dịch. Bạn thậm chí không thể lấy được từ điều này để ẩn nhà điều hành đó - bạn cần phải sửa mã của bạn. – Nim