2010-09-15 19 views

Trả lời

14

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.

+0

Đó là sự hiểu biết của tôi rằng đây là trong C++ 0x. – Puppy

+0

@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 –

+0

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. –

-1

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).

+16

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 & Foo() {...} mẫu void Foo () {...} –

+0

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

+3

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