2017-02-03 5 views

답변

1

당신이하려는 것은 부분 전문화이며 허용되지 않습니다. struct에 포장하는 것이 좋습니다.

template<class T> 
struct Maker 
{ 
    T make() { return T(); } 
}; 

template<int N> 
class A 
{}; 

template<int N> 
struct Maker<A<N>> 
{ 
    A<N> make() 
    { 
     return A<N>(); 
    } 
}; 
0

이것은 부분 전문화가 아니라 과부하입니다. <A<N>>을 삭제하십시오.

template<int N> 
A<N> make() 
{ 
    ... 
}; 
+0

일부 전문 분야입니다. 당신은 새로운 메소드를 만들어 ()을 호출하여 int가 아닌 을 반환합니다. – user1899020

+0

@ user1899020 첫 번째 과부하에서 유형이 ''('make ()')입니다. 여기서'int' ('make <0>()')를 사용하면됩니다. 부분 전문화는보다 전문화 된 'T'(예 : 정수형)를 중시합니다. –