Я пытаюсь добавить шаблонный метод в шаблонный класс. Я сослался на этот Ответ, однако, синтаксис не работает. Я добавил второй метод под названием tester
который я хотел бы быть шаблонным. Это то, что у меня есть
template <typename t,typename u>
struct foo {
void test();
template<typename v>
void tester(v lhs);
};
template<typename t,typename u>
void foo<t,u>::test() {
std::cout << "Hello World" ;
}
template<typename t,typename u>
template<typename v>
void foo<t,u>::tester<v>(v lhs) {
std::cout << "Hello world " << lhs ;
}
int main()
{
foo<int,int> t;
t.test();
t.tester<int>(12);
}
Я получаю ошибку для метода tester
это ошибка, которую я получаю
main.cpp:20:31: error: non-type partial specialization 'tester<v>' is not allowed
void foo<t,u>::tester<v>(v lhs) {
Любые предложения о том, почему я получаю эту ошибку или что я могу делать неправильно?
Комментарий встроенный в исправленный код ниже:
#include <iostream>
template <typename t,typename u>
struct foo {
void test();
template<typename v>
void tester(v lhs);
};
template<typename t,typename u>
void foo<t,u>::test() {
std::cout << "Hello World" ;
}
/*
* change made to this template function definition
*/
template<typename t,typename u>
template<typename v>
void foo<t,u>::tester(v lhs) {
std::cout << "Hello world " << lhs ;
}
int main()
{
foo<int,int> t;
t.test();
t.tester<int>(12);
}
Других решений пока нет …