шаблонная функция, специализированая константой
От: Yevgeny  
Дата: 25.09.04 03:21
Оценка:
template<int n>
void print()
{
printf("print %d\n", n);
}

template<>
void print<2>()
{
printf("print 22\n");
}

template<>
void print<1>()
{
printf("print 11\n");
}

int main(int argc, char* argv[])
{
print<1>();
return 0;
}

Visual C++ 6.0 SP6 печатает "print 22".
Это я что-то неправильно делаю, или это проблема компилятора?
Re: шаблонная функция, специализированая константой
От: denisku Россия  
Дата: 25.09.04 05:34
Оценка:
Здравствуйте, Yevgeny, Вы писали:

Y>Visual C++ 6.0 SP6 печатает "print 22".

Visual C++ Toolkit 2003 печатает "print 11".
Извините за потраченный траффик..
Re: шаблонная функция, специализированая константой
От: LaptevVV Россия  
Дата: 25.09.04 05:39
Оценка:
Здравствуйте, Yevgeny, Вы писали:

Y>Visual C++ 6.0 SP6 печатает "print 22".

Y>Это я что-то неправильно делаю, или это проблема компилятора?
На VC.NET 2003 выводит "print 11"
Очевидно, компилятор.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: шаблонная функция, специализированая константой
От: c-smile Канада http://terrainformatica.com
Дата: 25.09.04 06:24
Оценка:
Здравствуйте, Yevgeny, Вы писали:

Старая известная проблема Visual C++ 6.0.
Re: шаблонная функция, специализированая константой
От: Aera Беларусь  
Дата: 25.09.04 07:52
Оценка: 3 (1)
Здравствуйте, Yevgeny, Вы писали:

Y>Visual C++ 6.0 SP6 печатает "print 22".

Y>Это я что-то неправильно делаю, или это проблема компилятора?

Работать будет только если параметры шаблона будут указаны в виде параметров функции типа:
template<class T> void print(const T& t);

В противном случае VC6.0 не различает твои функции и подставляет их наугад.

Подобная проблема не возникает если работать с шаблонами класов.
template<int n>
class print {
public: print() { printf("print %d\т", n); } 
};

//и т.д.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
--
RedApe
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.