Следующий код дает мне ошибку компиляции "значение" не было объявлено в этой области.
template<class T>
struct Base {
int value;
};
template <class T>
struct Derived : public Base<T> {
int getValue() { return value; }
};
Я считаю крайне странным, что
- если
Derived
наследуется отBase<std::string>
, компиляция кода, - если я
return Base<T>::value
, код компилируется.
Почему код не компилируется, как есть? Каким образом "значение" не объявлено в области Derived<T>::getValue()
?