1
Я пытаюсь перегрузить метод шаблона в классе шаблона. Но это будет работать, только если я сделаю это внутри определения класса.Метод шаблона перегрузки в классе шаблона
Как получить внешнюю реализацию за пределами определения класса?
template<typename B>
class ClassA {
public:
template<typename T>
void foo(T a);
template<>
void foo(std::string a) { A = 4; }
template<>
void foo(float a);
B A;
};
template<typename B>
template<typename T>
void ClassA<B>::foo(T a) { A = a; }
template<typename B>
template<>
void ClassA<B>::foo<float>(float a) { A = a; }
// Compiler error: unable to match function definition to an existing declaration
void foo() {
ClassA<int> a;
a.foo(1);
a.foo<std::string>("kat");
a.foo<float>(4.5f);
}
Не знаю, почему я этого не видел. Thaks. – user2099460