클래스 템플릿에 대한 멤버 함수의 명시적 특수화
클래스 템플릿에서 멤버 함수의 명시적 특수화를 위해서는 주변 클래스 템플릿이 명시적으로 지정되어야 합니다. 그것도 전문적으로. 질문의 원래 코드는 X
이 문제를 해결하려면 아래와 같이 클래스 템플릿과 멤버 함수를 모두 명시적으로 특수화할 수 있습니다.
template <> template <> void X<int>::get_as<double>() { }
이 접근 방식은 get_as
주변 클래스 템플릿이 특수화되지 않은 상태로 유지되어야 하는 경우 대체 기술을 사용할 수 있습니다. 이러한 방법 중 하나는 그림과 같이 오버로드를 사용하는 것입니다.
template <class C> class X { template<typename T> struct type { }; public: template <class T> void get_as() { get_as(type<T>()); } private: template<typename T> void get_as(type<T>) { } void get_as(type<double>) { } };
이 접근 방식에서 get_as() 함수는 두 가지 버전으로 오버로드됩니다. 하나는 일반 인수를 사용하고 다른 하나는 double의 경우를 구체적으로 처리합니다. 이를 통해 주변 클래스 템플릿을 특수화하지 않고도 멤버 함수를 명시적으로 특수화할 수 있습니다.
위 내용은 클래스 템플릿에서 멤버 함수를 명시적으로 특수화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!