Có ai biết liệu trong C++ 11, các mẫu chức năng có thể được chuyên môn hóa một phần không?Chuyên môn hóa một phần các mẫu chức năng
Trả lời
Không, chúng không thể. Dự thảo tiêu chuẩn C++ 0x có phần (14.5.5) về chuyên môn từng phần của mẫu lớp, nhưng không đề cập đến các chuyên môn từng phần của hàm mẫu.
No; they were proposed as core language issue #229 (từ n1295) nhưng cuối cùng bị từ chối (và khá đúng như vậy, vì quá tải thực hiện công việc).
Tôi phải không đồng ý với "khá đúng như vậy". Quá tải không phải lúc nào cũng thực hiện công việc vì chúng ta không thể có quá tải chỉ khác nhau về kiểu trả về. Sẽ tốt hơn nếu tôi có thể làm điều gì đó như sau, ví dụ: mẫu
Tôi đồng ý quá tải là không đủ. Nói rằng tôi muốn quá tải std :: make_shared cho một cấu trúc C cũ với các hàm create_ * và destroy_ * tùy chỉnh. Một chuyên môn từng phần sẽ rất hữu ích trong trường hợp này. – AndyJost
Nhiều bất đồng hơn với "khá đúng như vậy": 'enable_if'. Nếu chúng ta có thể chuyên biệt hóa một phần chức năng, chúng ta có thể tránh những vụ hack vụng về với những người trợ giúp tag. – GreenScape
Đó là sự hiểu biết của tôi rằng đây là trong C++ 0x. – Puppy
@DeadMG: Có, tôi đang tham khảo dự thảo tiêu chuẩn C++ 0x, http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3092.pdf –
FYI: The bản nháp mới nhất hiện là [N3126] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3126.pdf) [Cảnh báo: Big PDF]. Câu trả lời không khác nhau trong bản nháp mới nhất. –