Đây là phần mở rộng của một tính năng hiện có, hỗ trợ khả năng đọc theo kinh nghiệm của tôi.
if (auto* ptr = get_something()) {
}
Ở đây, cả hai chúng tôi đều tạo biến ptr
và chúng tôi kiểm tra xem nó có phải là giá trị không. Phạm vi của ptr
được giới hạn ở nơi nó có hiệu lực. Thật dễ dàng hơn rất nhiều để thuyết phục bản thân rằng mọi việc sử dụng ptr
đều hợp lệ.
Nhưng điều gì sẽ xảy ra nếu chúng ta đang nói về một thứ gì đó không chuyển đổi bool
theo cách đó?
if (auto itr = find(bob)) {
}
Điều đó không hiệu quả. Nhưng với tính năng mới này, chúng tôi có thể:
if (auto itr = find(bob); itr != end()) {
}
Thêm một mệnh đề nói "khi nào khởi tạo này hợp lệ".
Về bản chất, điều này cung cấp cho chúng ta một tập hợp các mã thông báo có nghĩa là "khởi tạo một số biểu thức và khi nó hợp lệ, hãy thực hiện một số mã. Khi nó không hợp lệ, hãy loại bỏ nó."
Việc thực hiện thủ thuật kiểm tra con trỏ từ C ++ 98 đã trở nên thành ngữ. Khi bạn đã nắm bắt được điều đó, phần mở rộng này là đương nhiên.