static переменная в шаблонной функции
От: WolfHound  
Дата: 28.04.03 17:10
Оценка:
template<some_args> 
void SomwFunc()
{
    static SomeType var;
}

Как я понимаю при разных аргументах шаблона должны быть разные переменные. Если да то у VC7.0 с этим проблемы... При линьковки получаем ошибки типа такая переменная уже есть... Благо класс мой и он маленький... Я просто прицепил к нему такой же набор шаблонных параметров и все сразу заработало.
... << RSDN@Home 1.0 beta 6a >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: static переменная в шаблонной функции
От: Bell Россия  
Дата: 29.04.03 06:14
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>
WH>template<some_args> 
WH>void SomwFunc()
WH>{
WH>    static SomeType var;
WH>}
WH>

WH>Как я понимаю при разных аргументах шаблона должны быть разные переменные. Если да то у VC7.0 с этим проблемы... При линьковки получаем ошибки типа такая переменная уже есть... Благо класс мой и он маленький... Я просто прицепил к нему такой же набор шаблонных параметров и все сразу заработало.

Не помню, осталься ли этот баг в VC7.0, но в VC6 при определении шаблонной функции необходимо в сигнатуре указать все параметры шаблона.

template <typename T>
void f(T* = 0)
{
   static int n = 0;
   cout << n << endl;
   ++n;
}

int main(int argc, char** argv)
{
  f<int>();
  f<double>();

  return 0;
}


Вывод
0
0
Любите книгу — источник знаний (с) М.Горький
Re[2]: static переменная в шаблонной функции
От: WolfHound  
Дата: 29.04.03 08:48
Оценка:
Здравствуйте, Bell, Вы писали:

B>Не помню, осталься ли этот баг в VC7.0, но в VC6 при определении шаблонной функции необходимо в сигнатуре указать все параметры шаблона.


Похоже остался ибо у меня все параметры детектятся и проставлять их рачками я не буду блоаго есть обьезд.
... << RSDN@Home 1.0 beta 6a >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.