Так и не понял утверждения: Since the definition of a dependent base class is not known at that time ...
Определение класса еще не известно на данный момент, Далее по тексту указана причина: «there may be specialisations of the base class template that have not yet been seen».
#include <iostream>
using namespace std;
template<typename T> struct A
{
void x() { cout << "A\n"; }
};
template<typename T> struct Z: public A<T>
{
void y() {
// This one works
this->x();
// g++ error: there are no arguments to ‘x’ that depend
// on a template parameter, so a declaration of ‘x’ must be available
//x();
}
};
template<> struct A<int>
{
void x() { cout << "B\n"; }
};
main()
{
Z<int> t;
t.y();
}