Я хочу разместить функцию stati c внутри класса шаблона по организационным причинам, а не потому, что функция stati c нуждается в параметре шаблона. Например:
#include <iostream>
template<typename T>
struct Test {
void print() const {
std::cout << var << std::endl;
}
T var;
template<typename G>
static void sayHi(G&& g) {
std::cout << "Hi! from " << g.print() << std::endl;
}
};
int main() {
Test<std::string> t1{"Goodbye"};
t1.print();
Test::sayHi(t1);
}
Однако я получаю следующую ошибку:
error: 'Test' is not a class, namespace, or enumeration
Test::sayHi();
Я понимаю, почему это ошибка. Есть ли другой способ, которым я могу попытаться осуществить это? У кого-нибудь есть альтернативы?
Я знаю следующие работы, однако я не хочу указывать параметр шаблона для этого вызова stati c, особенно потому, что этот метод stati c на самом деле не в параметре шаблона T
вообще.
Test<std::string>::sayHi(t1);