У меня проблема с этим кодом:Специализируясь на VARIADIC функции члена шаблона нешаблонного класса
#include <iostream>
using namespace std;
class A {
public:
template<typename T, typename... Args>
void stuff(Args... args);
};
template<typename T, typename... Args>
void A::stuff(Args... args) {
cout << sizeof...(args) << endl;
}
template<>
void A::stuff<int>() {
cout << "int" << endl;
}
int main() {
A a;
A b;
a.stuff<char>();
b.stuff<int>();
}
Trying to compile it, я получаю эту ошибку:
template-id 'stuff<int>' for 'void A::stuff()' does not match any template declaration
Что я делаю неправильно? Я пробовал это без вариативности, и это сработало, но как я специализирую функцию Variadic template member?
Это выглядит хорошо, но я думаю, что ошибка имеет какое-то отношение к тому, что шаблоны функций не могут быть частично специализированными. Я не знаю, как вы получите синтаксис прямо, специализируясь на первом параметре (T) и не указывая тип «variadic» (args). –
@AdityaKumar Я не частично специализирую шаблон, он полностью специализирован. –
Да, я понимаю. Мне интересно, есть ли еще поддержка компилятора. –