Почему мне нужно обращаться к членам базового класса шаблона через указатель this?

Если бы приведенные ниже классы не были шаблонами, я мог бы просто иметь x в производном классе . Однако с приведенным ниже кодом я должен использовать this-> x . Почему?

template <typename T>
class base {

protected:
    int x;
};

template <typename T>
class derived : public base<T> {

public:
    int f() { return this->x; }
};

int main() {
    derived<int> d;
    d.f();
    return 0;
}
184
задан Destructor 15 June 2016 в 04:13
поделиться