C ++ 템플릿 기능의 전문화 :“명시 적 템플릿 인수의 불법 사용”
-
06-07-2019 - |
문제
다음 템플릿 전문화 코드 :
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>
.
제휴하지 않습니다 StackOverflow