объявление шаблонного метода внутри шаблонного класса

Я пытаюсь добавить шаблонный метод в шаблонный класс. Я сослался на этот Ответ, однако, синтаксис не работает. Я добавил второй метод под названием 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) {

Любые предложения о том, почему я получаю эту ошибку или что я могу делать неправильно?

0

Решение

Комментарий встроенный в исправленный код ниже:

#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);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector