Tôi cần chuyên biệt hóa chức năng thành viên mẫu cho một số loại (giả sử đôi ). Nó hoạt động tốt trong khi Xbản thân lớp không phải là lớp mẫu, nhưng khi tôi làm cho nó mẫu thì GCC bắt đầu đưa ra lỗi thời gian biên dịch.
#include <iostream>
#include <cmath>
template <class C> class X
{
public:
template <class T> void get_as();
};
template <class C>
void X<C>::get_as<double>()
{
}
int main()
{
X<int> x;
x.get_as();
}
đây là thông báo lỗi
source.cpp:11:27: error: template-id
'get_as<double>' in declaration of primary template
source.cpp:11:6: error: prototype for
'void X<C>::get_as()' does not match any in class 'X<C>'
source.cpp:7:35: error: candidate is:
template<class C> template<class T> void X::get_as()
Làm thế nào tôi có thể khắc phục điều đó và vấn đề ở đây là gì?
Cảm ơn trước.