Re[2]: GCC 3.4 новые правила разрешения имен
От: McSeem2 США http://www.antigrain.com
Дата: 18.06.04 02:31
Оценка:
Здравствуйте, Андрей Тарасевич, Вы писали:

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>?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.