Estoy intentando utilizar variables miembro de una clase base de plantilla en una clase derivada, como en este ejemplo:Uso de variables miembro heredadas de una clase base de plantilla (C++)
template <class dtype>
struct A {
int x;
};
template <class dtype>
struct B : public A<dtype> {
void test() {
int id1 = this->x; // always works
int id2 = A<dtype>::x; // always works
int id3 = B::x; // always works
int id4 = x; // fails in gcc & clang, works in icc and xlc
}
};
gcc y sonido metálico son ambos muy exigente con el uso de esta variable, y requieren un alcance explícito o el uso explícito de "esto". Con algunos otros compiladores (xlc y icc), las cosas funcionan como era de esperar. ¿Es este un caso de xlc y icc que permite código que no es estándar, o un error en gcc y clang?
Pregunta similar: http://stackoverflow.com/questions/11405/gcc-problem-using-a-member-of-a-base-class-that-depends-on-a-template-argument –