나는 문제는 매개 변수가 모두 알려진 때 내부 템플릿을 전문으로하는 데 문제가 있습니다. 예를 들면 다음과 같습니다.전문 내부 템플릿
template < typename T0 >
struct outer
{
template < typename T1 = void, typename T2 = void >
struct inner
{
typedef T1 type;
};
};
template < typename T0 >
template < typename T1 >
struct outer<T0>::inner<double,T1> { typedef int type; };
잘 작동합니다. 내가 대신과 같이 내부 템플릿을 지정하면, 그렇지 않습니다이 들어
template < typename T0 >
template < >
struct outer<T0>::inner<double,void> { typedef int type; };
나는 클래스 템플릿 명시 적으로 전문하지 둘러싸 ... '>'토큰 전에 오류 메시지 "잘못된 명시 적으로 전문화를 얻을 .. 부분 전문화에서 사용되지 않는 .template 매개 변수 : ... T0 ". WTAF가 여기에 있는지 확실하지 않습니다. 실패
template < typename T0 >
struct outer<T0>::inner<double,void> { typedef int type; };
나는 이것을 예상하고 오류 메시지가 놀라운 일이 아니다 :
나는이 시도했다. 그것은 "너무 적은 템플릿 매개 변수 목록"입니다.그래서,이 작업을 수행하는 올바른 방법은 무엇입니까? 나는 물론 그 주위를 해킹 할 수 있지만, 그렇게하지 않으면 나는 더 좋을 것이다. 허용되지 않습니다
관련 : http://stackoverflow.com/questions/9219157/why-cant-i-specialize-the-nested-template - 구성원 -없는 - 전문 - 둘러싸는? LQ = 1 –
흠 ... 제가 검색을 할 않았다하지만이 표시되지 않았다. 그렇게하기 전에 정확한 염소 종을 희생해서는 안됩니다. –