Tôi đang nghĩ đến việc thay thế tất cả các trường hợp thành ngữ bool an toàn bằng explicit operator bool
trong mã đã sử dụng các tính năng C++ 11 (vì vậy các trình biên dịch cũ không nhận ra chuyển đổi rõ ràng) các nhà khai thác sẽ không quan trọng), vì vậy tôi muốn biết nếu nó có thể gây ra một số vấn đề tinh tế.Sự không tương thích giữa thành ngữ bool an toàn và toán tử bool
Vì vậy, tất cả khả năng không tương thích nào (thậm chí là những điều ít nhất) có thể xảy ra do chuyển từ thành ngữ bool cũ sang mờ sang explicit operator bool
mới và sáng bóng?
EDIT: Tôi biết rằng chuyển đổi là một ý tưởng tốt, vì sau này là một tính năng ngôn ngữ, được hiểu bởi trình biên dịch, vì vậy nó sẽ làm việc không tồi tệ hơn những gì trong thực tế chỉ là một hack. Tôi chỉ muốn biết những khác biệt có thể có.
Tất nhiên bạn đã đúng. Nhưng có một lý do tôi gắn thẻ này với 'language-lawyer'. Tôi muốn những sự thật thuần khiết theo sau bản thân tiêu chuẩn, không phải là lời khuyên về những thực hành tốt. Phải làm rõ điều đó, nhưng dù sao cũng được. – Fanael
@ Fanael: Các tiêu chuẩn, C++ 03 và C++ 11 cả hai, không nói về thành ngữ an toàn-bool, vì vậy nó không thể trích dẫn từ nó để hỗ trợ những gì tôi đã nói. Tất cả những gì tôi ngụ ý là C++ 11 đã giới thiệu 'bool' toán tử rõ ràng vì lý do, và một trong những lý do, tôi nghĩ, là' toán tử bool' rõ ràng là ** an toàn hơn ** cái gọi là thành ngữ an toàn-bool. – Nawaz
Nhưng các cuộc đàm phán tiêu chuẩn về những thứ được sử dụng để thực hiện thành ngữ bool an toàn. Vì vậy, trong khi tiêu chuẩn nói vô nghĩa về thành ngữ đó, chính xác của nó đảm bảo được khá nhiều ngụ ý bởi các tài liệu. – Fanael