2015-05-22 21 views
6

Chạy một lambda trên phạm vi xuất cảnh có vẻ như một điều cơ bản như vậy, tôi hy vọng nó sẽ được chuẩn hóa. Những thứ như unique_ptr là tốt hơn, khi chúng áp dụng, nhưng tôi thấy có một nguồn cung cấp vô tận của các "destructor" một lần là cần thiết, đặc biệt là khi tận dụng các thư viện kiểu C. Có ai biết nếu điều này đang đến?Có tiêu chuẩn hóa phạm vi bảo vệ phạm vi/thành phần thoát khỏi phạm vi không?

+0

Trong trường hợp nào bạn đang sử dụng lambdas khi thoát khỏi phạm vi? – Borgleader

+0

Chờ đợi các hạng mục công việc của hồ bơi để hoàn thành trước khi đóng hồ bơi chủ đề là một ví dụ tốt (ngay cả khi một ngoại lệ được ném bạn vẫn phải đợi hoặc nó sẽ làm hỏng công nhân). Bạn luôn có thể tạo một trình bao bọc C++ đầy đủ cho mỗi thứ bạn làm, nhưng có nhiều mã bổ sung trong trường hợp bạn sử dụng nó một lần. – VoidStar

+0

Viết đề xuất? Tôi tình cờ thích [Stefanus Du Toit] (https://github.com/CppCon/CppCon2014/blob/master/Presentations/C%2B%2B11%20in%20the%20Wild%20-%20Techniques%20from%20a%20Real % 20Codebase/auto.h) 's thực hiện (mặc dù tôi không có ý tưởng tại sao ông gọi nó là 'Auto') – Barry

Trả lời

8

n4189 là một đề xuất để thêm make_scope_exit trình bao bọc và các trình xử lý tài nguyên tương tự khác vào ngôn ngữ. Nó dựa trên sự tương tác scope_guard tương đối nổi tiếng.

"Trạng thái giấy hiện tại" gần đây nhất từ ​​LWG là vào năm 2013, trước ngày trên.

Nội dung của C++ 1z (hy vọng C++ 17) chưa được xác định.

C++1z status for clang không đề cập đến nó. C++1z TS for clang không đề cập đến nó.

Bản thân giấy có chứa triển khai ví dụ. Tôi không biết điều khoản cấp phép của nó là gì.

+3

Nó [dường như đã vượt qua LEWG] (https://issues.isocpp.org/show_bug.cgi?id=6), nhưng có vẻ như nó sẽ cần từ ngữ tốt hơn trước khi nó có thể con nuôi. N4189 của từ ngữ là khá xấu. –

7

It would appear rằng phiên bản hiện hành của giấy xuất cảnh phạm vi, P0052, sẽ được đi sâu vào nguyên tắc cơ bản Library v3, cho làm con nuôi có khả năng trong bài C++ 17 tiêu chuẩn.

Tóm lại, sẽ không xảy ra với C++ 17. Lấy làm tiếc.

+1

Nhận xét cuối cùng cho biết có đề xuất chuyển nó sang IS. Không thể nói liệu nó sẽ xảy ra. –

+0

@pepper_chico IS là gì? – Jens

+0

@Jens: Tiêu chuẩn quốc tế. Nó đã không làm cho nó, btw. –

Các vấn đề liên quan