2013-06-10 34 views
9

Lý do tôi hỏi là có các thông tin mâu thuẫn trên web. Một mặt trên isocpp.org nó nói rằng GCC 4.8.1 có tiêu chuẩn C++ 11 được triển khai hoàn toàn. Mặt khác, GCC C++11 support page nói rằng không có "Hỗ trợ tối thiểu cho việc thu thập rác và phát hiện rò rỉ dựa trên khả năng hiển thị". Vậy GCC 4.8.1 thực sự đã hoàn thành tính năng C++ 11 chưa?Gcc 4.8.1 có hỗ trợ C++ 11 để thu gom rác không?

+2

Không phải là tùy chọn thu gom rác? –

+4

Gcc 4.8 hoàn toàn tương thích với C++ 11 ở cấp độ ngôn ngữ cốt lõi, điều này không có nghĩa là việc triển khai thư viện hoàn toàn tương thích với C++ 11. –

+5

@Mechanicalsnail: GC là tùy chọn, hỗ trợ tối thiểu cho GC không và thiếu từ gcc là 4.8 –

Trả lời

12

Hỗ trợ thu gom rác là tùy chọn theo tiêu chuẩn (xem Bjarne Stroustrup C++11 FAQ). Do đó, GCC 4.8.1 là tính năng hoàn chỉnh vì nó thực hiện tất cả các phần cốt lõi bắt buộc của tiêu chuẩn.

Các ý kiến ​​đã chứng minh câu trả lời của tôi không rõ ràng, tôi sẽ cụ thể hơn: Tôi chỉ nói về sự hỗ trợ cốt lõi cho việc thu gom rác thải. Phần thư viện là bắt buộc. Phiên bản libstdC++ được gửi kèm với GCC 4.8.1 không hoàn toàn tương thích với C++ 11 (<regex> hiện không hoạt động), và ABI để thu thập rác là một phần của các tính năng còn thiếu.

+1

+1, xem [Đề xuất N2670] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm): * Triển khai không hỗ trợ thu thập và thực hiện thu gom rác thải tất cả các cuộc gọi thư viện được mô tả ở đây là không có ops phù hợp. * – syam

+5

Cung cấp GC là tùy chọn, cung cấp * hỗ trợ * cho GC không phải là. Mục nhập trong trạng thái gcc C++ 11 đề cập đến * hỗ trợ * cho GC và nó không được triển khai. Đó là, bằng cách sử dụng bình luận của Syam ở trên: làm GC là tùy chọn (các cuộc gọi có thể là no-op), nhưng giao diện phải có mặt (đây không phải là tùy chọn) –