GCC-Problem: Verwenden eines Mitglieds einer Basisklasse, die von einem Vorlagenargument abhängt
Der folgende Code wird nicht mit gcc kompiliert, aber mit Visual Studio:
template <typename T> class A {
public:
T foo;
};
template <typename T> class B: public A <T> {
public:
void bar() { cout << foo << endl; }
};
Ich erhalte den Fehler:
test.cpp: In der Member-Funktion "void B :: bar ()":
test.cpp: 11: Fehler: "foo" wurde in diesem Bereich nicht deklariert
Aber es sollte sein! Wenn ich mich änderebar
zu
void bar() { cout << this->foo << endl; }
dann estut kompilieren, aber ich glaube nicht, dass ich das tun muss. Gibt es etwas in den offiziellen Spezifikationen von C ++, dem GCC hier folgt, oder ist es nur eine Eigenart?