문제

다음 템플릿 전문화 코드 :

template<typename T1, typename T2>
void spec1()
{

}

테스트 케이스 1 :

template< typename T1> //compile error
void spec1<int>()
{

}

테스트 케이스 2 :

template< typename T2> //compile error
void spec1<int>()
{

}

다음 컴파일 오류를 생성합니다.

오류 C2768 : 'spec1': 명시 적 템플릿 인수의 불법 사용

왜 그런지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

함수 템플릿은 부분적으로 전문화 될 수 없으며, 즉, 다음과 같습니다.

template<>
void spec1<char, int>()
{

}

기능 템플릿이 부분적으로 전문화 될 수없는 이유에 대해 이것을 읽으십시오.

부분적으로 전문화 할 때 (수업에만 가능) : 다음과 같이해야합니다.

template <typename T1>
class class1<T1, int>
{

};

그래서 당신은 나열해야합니다 T1 다시.

당신의 전문화가 작성되는 방식은 모호 할 것입니다. spec1<int, int>.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top