структура:
\\hpp file
struct SSS{
using Value = int;
int x;
};
template <typename T>
typename T::Value foo(int x);
и я хочу определить функцию в cpp:
\\cpp file
template<typename T>
typename T::Value foo(int x) {
// work with T
return x+5;
}
template SSS::Value foo(int);
и вызывать функцию хочу как: auto x = foo<SSS>(y);
но вываливается ошибка:
Explicit instantiation of 'foo' does not refer to a function template, variable template, member function, member class, or static data member candidate template ignored: couldn't infer template argument 'T'
template SSS::Value foo(int);
как мне правильно определить инстанцирование шаблона, чтобы оно скомпилировалось и не пришлось определять функцию в h файле?
Темплейты нельзя разрывать на h и сpp
template SSS::Value foo<SSS>(int); нужно если не ошибаюсь
foo<SSS>(int);
Я же мог это сделать в более простом случае
О, круто, сасибо, заработало)
Обсуждают сегодня