Tôi muốn viết như sau:Tôi nên làm gì thay vì chuyên môn hóa một phần các mẫu chức năng?
template <typename S, typename T> void foo() {
/* code for the general case */
}
template <typename T> void foo<MySType,T>() {
/* partially specialized code - for any kind of T, but when S is MySType */
}
hoặc, trong trường hợp khác, như sau:
template <typename S, typename T> void bar(const S& a, const T& b) {
/* code for the general case */
}
template <typename T> void bar<MySType,T>(const MySType& a, const T& b) {
/* partially specialized code - for any kind of T, but when S is MySType */
}
C++ (11) sẽ không cho phép tôi làm điều này.
Bây giờ, tôi đã đọc this question and its answers; giả sử tôi mua giải thích lý do tại sao chúng tôi không có chuyên môn hóa từng phần (hoặc chỉ giả định rằng tôi đang sống trong thực tế và thực sự muốn viết mã). Vâng, những gì làm Tôi làm, thay vì?
Tôi thực sự không muốn bọc các chức năng này trong một lớp trừ khi đó hoàn toàn là phương sách cuối cùng của tôi.
thành thật tôi càng lao vào C++ 11 và C++ nói chung, tôi càng nghĩ rằng "mẫu chuyên môn" là một trình độ khủng khiếp cho những gì đang xảy ra . Không có điều gì như "chuyên môn mẫu" – user2485710
@ user2485710: Tôi xin lỗi, tôi không hiểu ... bạn có thể xây dựng được không? Hoặc liên kết đến nơi bạn đã tranh cãi điều này ở độ dài hơn? – einpoklum
Không chỉ là chuyên môn về mẫu một thứ, nó là một máy hoàn thiện Turing. Nó có thể khiến bạn phát điên. – Potatoswatter