Следующий код дает мне ошибку компиляции "значение" не было объявлено в этой области.
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()?