I really don't know what is wrong, because the same code as pure classes without templates works fine.
This is due to the fact that the base class (template template A) is not an independent base class; its type cannot be defined without knowledge of the template arguments. And Ais an independent name. Independent names do not appear in dependent base classes.
, A, , .
void test() { std::cout << "testing... " << this->a << std::endl; };
void test() { std::cout << "testing... " << A<T>::a << std::endl; };
void test() {
using A<T>::a;
std::cout << "testing... " << a << std::endl;
};