C++ 11 giới thiệu một số interface to garbage collectors. Từ những gì tôi thấy, nó cung cấp một cách tiêu chuẩn để giao tiếp với GC (ví dụ: declare_no_pointers) và để nhận thông tin về cách xử lý con trỏ được cải trang (ví dụ: get_pointer_safety).Có sử dụng thực tế nào của Garbage Collection của C++ 11 không?
Tuy nhiên, không có cách nào được chuẩn hóa trong C++ 11 chưa phân bổ một khối bộ nhớ thô mà bạn không phải giải phóng thủ công. Có những trường hợp sử dụng mà điều đó sẽ giúp ích cho bạn, ngay cả khi các destructor không được gọi. Một ví dụ là triển khai các cấu trúc dữ liệu đồng thời hiệu quả (như đã đề cập bởi Herb Sutter) mà không cần phải xử lý các giao thức dọn dẹp phức tạp.
Cho đến nay, rất tốt. Câu hỏi của tôi (từ quan điểm của một nhà phát triển bình thường, không phải là nhà phát triển thư viện GC):
Có một ví dụ thực tế nơi giao diện C++ 11 GC mới đã giúp bạn?
Ít nhất theo quan điểm của tôi, thế giới không thay đổi. Nếu bạn cần GC, bạn vẫn phải tìm một thư viện không chuẩn, ví dụ: Boehm GC và tìm hiểu cách tích hợp và sử dụng nó. Giao diện chuẩn hóa mới sẽ không giúp ích nhiều cho sự tôn trọng đó. Nó cũng sẽ không giải quyết các vấn đề về tính di động.
(Về lâu dài, giao diện thông thường được xác định bởi các tiêu chuẩn C++ 11 hy vọng đền đáp. Tuy nhiên, mục tiêu câu hỏi của tôi chỉ tương lai gần.)
Điều này không được hỗ trợ bởi bất kỳ trình biên dịch AFAIK nào. – Rapptz
@Rapptz: Clang và gcc không hỗ trợ nó, nhưng msvc thì có. –
Tôi có thể sẽ bị quấy rầy bởi một thiểu số nhưng rất nhỏ, nhưng ai sẽ muốn GC trong C++? Chúng tôi đã có RAII, và điều này đánh bại GC bất cứ lúc nào, như xa như C + + ngữ nghĩa có liên quan. Nhưng, phải thừa nhận, nó có thể hữu ích trong các ngôn ngữ khác mà không có cùng kỳ vọng - ví dụ. Tôi là một người hâm mộ Lisp lớn và tôi không thể tưởng tượng nó mà không có GC. – syam