我希望能夠專注一類的構造函數的方式如下:可變參數模板的構造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