我希望能够专注一类的构造函数的方式如下:可变参数模板的构造speciliazation
template<typename T>
class Foo {
public:
template<typename... Ts>
Foo(Ts... & args) {
// ...
}
template<>
Foo(int i) {
// ...
}
};
我收到以下错误:
error: explicit specialization in non-namespace scope ‘class Foo’
如果我尝试移动类外的专业化,如下所示:
template<typename T>
class Foo {
public:
template<typename... Ts>
Foo(Ts &... args) {
// ...
}
};
template<typename T>
template<int>
Foo<T>::Foo(int i) {
// ...
}
我收到以下错误:
error: prototype for ‘Foo::Foo(int)’ does not match any in class ‘Foo’
error: candidate is: template template Foo::Foo(Ts& ...)
我该如何正确地做到这一点?
不要专门化它。重载它。 – WhozCraig