2017-02-03 41 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

這是一個部分專業化。你做了一個新的方法使()返回A 以外的int。 – user1899020

+0

@ user1899020您使用的是類型''('讓()')在首個過載。在這裏你需要一個'int'('make <0>()')。部分專業化將會更加專業化的「T」(例如整型)。 –

相關問題