Problem z GCC: użycie elementu klasy bazowej, który zależy od argumentu szablonu

Poniższy kod nie kompiluje się z gcc, ale działa z Visual Studio:

template <typename T> class A {
public:
    T foo;
};

template <typename T> class B: public A <T> {
public:
    void bar() { cout << foo << endl; }
};

Dostaję błąd:

test.cpp: W funkcji członka „void B :: bar ()”:

test.cpp: 11: error: „foo” nie zostało zadeklarowane w tym zakresie

Ale tak powinno być! Jeśli się zmieniębar do

void bar() { cout << this->foo << endl; }

potem torobi kompiluj, ale nie sądzę, żebym musiał to robić. Czy w oficjalnych specyfikacjach C ++ jest coś, co GCC śledzi tutaj, czy jest to tylko dziwactwo?

questionAnswers(5)

yourAnswerToTheQuestion