You should do it like this :
template
class derived : public base
{
public:
void bar()
{
base::template foo();
}
};
Here is full compilable example :
#include
template
class base
{
public:
virtual ~base(){}
template
void foo()
{
std::cout << "base::foo()" << std::endl;
}
};
template
class derived : public base
{
public:
void bar()
{
base::template foo(); // Compile error
}
};
int main()
{
derived< int > a;
a.bar();
}