Найдено результатов: 1

GCC проблема: использование члена базового класса, который зависит от аргумента шаблона

Следующий код компилируется не с помощью gcc, а с помощью Visual Studio:

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

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

Я получаю ошибку:

test.cpp: в функции-члене ' void B::bar()’:

test.cpp:11: ошибка: ‘foo’ не был объявлен в этой области видимости

Но так и должно быть! Если я изменю bar на

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

затем он компилируется, но я не думаю, что мне нужно это делать. Есть ли что-то в официальных спецификациях C++, что GCC следует здесь, или это просто причуда?

c++   templates   base-class   class-members   name-lookup    

419   5   15:59, 21st August, 2020