Sto cercando di utilizzare le variabili membro di una classe di base su modelli in una classe derivata, come in questo esempio:Uso variabili membro ereditati da una classe di base su modelli (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 e clang sono entrambi molto schizzinosi sull'utilizzo di questa variabile e richiedono un ambito esplicito o l'uso esplicito di "questo". Con alcuni altri compilatori (xlc e icc), le cose funzionano come mi aspetterei. Si tratta di un caso di xlc e icc che consente il codice non standard o un bug in gcc e clang?
Domanda simile: http://stackoverflow.com/questions/11405/gcc-problem-using-a-member-of-a-base-class-that-depends-on-a-template-argument –