Я хочу, чтобы иметь возможность специализировать CTOR класса следующим образом:VARIADIC шаблон конструктор 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