Возможный дубликат:
Где и почему мне нужно поместить ключевые слова шаблона и typename?
Вот код:
template<typename T>
class base
{
public:
virtual ~base();
template<typename F>
void foo()
{
std::cout << "base::foo<F>()" << std::endl;
}
};
template<typename T>
class derived : public base<T>
{
public:
void bar()
{
this->foo<int>(); // Compile error
}
};
И при запуске:
derived<bool> d;
d.bar();
Я получаю следующие ошибки:
error: expected primary-expression before ‘int’
error: expected ‘;’ before ‘int’
Мне известны независимые имена и двухфазный вид - взлетов. Но когда сама функция является функцией-шаблоном (функция foo<>()
в моем коде), я пробовал все обходные пути только безуспешно.