Hello all, I am new to using templates and run into a problem:

I have a file foo.h:

#ifndef FOO_H_
#define FOO_H_

class foo{
public:
foo();
template <unsigned int ID>
int doSomething();
virtual ~foo();
};

#endif /* FOO_H_ */

and a foo.cpp:

#include "foo.h"

foo::foo() {
}

template <unsigned int ID>
int foo::doSomething(){
....
}

foo::~foo() {
}

and in my main.cpp I want to do something like:

#include "foo.h"

int main(int argc, char *argv[]){
foo *bar = new foo();
foo->doSomething<2u>();
return 0;
}

The problem is that whenever i try this i get undefined reference to `int foo::doSomething<2u>()

I have tried a number of variations to call the template (and tbh I am not even sure what I want to is possible) but no success.

Any Help would be greatly appreciated. Thank you.