Chỉ cần tò mò, các bộ công cụ GCC hoặc Clang có thực hiện tương đương với identical COMDAT folding (ICF) của MSVC không? Nếu không, có kế hoạch nào không? Tôi dường như không thể tìm thấy bất kỳ liên kết có thẩm quyền nào gần đây về chủ đề này ngoài các thông điệp danh sách gửi thư GCC cũ.GCC (/ Clang): Các chức năng hợp nhất với các lệnh giống nhau (COMDAT folding)
Nếu không, điều này ngụ ý rằng mẫu instantiations trên các loại riêng biệt luôn là hàm riêng biệt trong kết quả nhị phân (trong trường hợp chúng không hoàn toàn được inlined), ngay cả khi chúng tương thích nhị phân, hoặc có cơ chế khác trong- nơi để xử lý này ở một số cấp độ khác?
Ngoài ra, có ai đã tìm thấy ICF tạo sự khác biệt lớn trong việc giảm thiểu kích thước của kết quả thực thi trong thực tế không? Tôi không có bất kỳ dự án MSVC lớn nào tiện dụng để kiểm tra nó. (Tôi đoán nó chỉ thực sự hữu ích nếu bạn tình cờ tạo ra các mẫu trên nhiều loại tương thích với bố cục vtable khác nhau.)
Cuối cùng, là C++ 11 tuân thủ tiêu chuẩn cho hai hàm con trỏ đến các hàm khác nhau để so sánh bằng nhau trong thời gian chạy? This link dường như ngụ ý rằng nó không phải là, nhưng nó cho C99. CHỈNH SỬA: found previous question on this topic
Tìm thấy [trích dẫn từ Larry Osterman của MSFT] (http://blogs.msdn.com/b/oldnewthing/archive/2005/03/22/400373.aspx): "Và tính năng này [ICF] là điều khiến C++ là một giải pháp khả thi cho các ứng dụng ... Nếu không, các mẫu sẽ gây ra sự bùng nổ đầy đủ về kích thước mã mà chúng hầu như không thể sử dụng được cho phần mềm sản xuất. "... tò mò về cách GCC/Clang nhận được nếu họ không làm điều này –
Vâng họ nhận được bởi và rất nhiều phần mềm sử dụng các mẫu trong thư viện chuẩn, vì vậy rõ ràng là không đúng là các mẫu "hầu như không sử dụng được" –
@ JonathanWakely Hah, tôi thích GCC, đó chỉ là trích dẫn của anh ấy :) –