2017-02-03 40 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”(例如整型)。 –

相关问题