In A.h:
namespace ns {
template <typename T>
class A {
public:
static void test();
}
}
In A.cpp:
#include "A.h"
using ns::A;
template <typename T>
void A<T>::test() {
// Do something
}
In main.cpp:
#include "A.h"
using ns::A;
int main() {
A<int>::test();
return 0;
}
The compiler says:
main.cpp:(.text+0x5): undefined reference to `ns::A<\int>::test()'
collect2: error: ld returned 1 exit status