Здравствуйте, Андрей Тарасевич, Вы писали:
MS>>Второй вопрос — если так, то почему резолвится this->base_var? Ведь this это не base_class<T>, это — тот же самый derived_class<T>?
АТ>'this->base_var' — зависимое выражение. Просто 'base_var' — независимое выражение. Отсюда и различия в разрешении имен, содержащихся в этих выражениях.
Спасибо!
Все-таки мне кажется более логичным писать типа:
template<class T> class derived_class
{
...
typedef base_class<T> base_type;
typedef derived_class<T> self_type;
void f()
{
base_type::var;
}
};
Хоть и больше писанины, но гораздо нагляднее.
А вот для виртуальных функций — только "this->"
Кстати, попутный вопрос — я до сих пор пишу template<class T>... Не собираются ли они в будущем упразнить такую форму декларации и заставить писать template<typename T>?