template<typename T1, typename T2>
class Bimap {
public:
class Data {
private:
template<typename T> Data& set(T);
template<> Data& set<T1>(typename T1 v) { /*...*/ }
};
};
Điều đó mang lại cho tôi những lỗi:C++: lỗi "chuyên môn hóa rõ ràng trong phạm vi không gian tên"
error: explicit specialization in non-namespace scope 'class Bimap<T1, T2>::Data'
tôi hiểu những gì các lỗi nói. Nhưng tại sao tôi không thể làm điều này? Và làm thế nào tôi có thể sửa nó?
Đáng chú ý rằng một số trình biên dịch sẽ hỗ trợ điều này. – Puppy
Trong C++ bạn không thể chuyên biệt một cách rõ ràng một mẫu thành viên mà không rõ ràng chuyên mẫu lớp kèm theo. Những gì bạn đang cố gắng (cụ thể là, chuyên môn) để làm là * không thể *. Bạn phải sử dụng quá tải. Hoặc thiết kế lại toàn bộ điều. MSVC++ là một trình biên dịch cho phép điều này như là một phần mở rộng. – AnT