[C++] Частичное уточнение шаблона
P.S. я имею ввиду, что вообще gcc3 и msvc 7 поддерживают частичное уточнение шаблона.
зачем оно нужно конкретно в твоем коде, мне не очень ясно
Может, в данном случае лучше значение по умолчанию использовать?
«msvc 7» не тянет точно, как и многое другое... А вот GCC может нужно настроить... а так «partial specialization `f<a, 0>' of function template» отвечает.
Для вышеуказанного примера сообразить обход через параметр по умолчанию не могу...
{
if(!b)
return a;
return f<a, b-1>
}
а блин, msvc7 умеет только классовые темплейты частично специализировать.
Хотя может соптимизирует... =)
Но в данном случае, я не прав. Гцц не дает юзать дефолтные значения у шаблонов функций.
template <int a, int b> int f { return f<a, b-1> }Напиши лучше, что за задачу ты таким спопобом пытаешься решать.
template <int a> int f<a, 0> { return a; }
Ну, к примеру, перебор подстановок. Хочу типы, представляющие понятия «выборка k из n» и «выборка k из n, когда m выбрано», при этом k и m заданы до компиляции. Выбор осуществляется по-разному, но согласование с уже выбранным единообразно. Все работало, но появилась идея оформить их одним шаблоном.
vc++ 2005 тянет
Сдается мне, что тут дело вовсе не в чудовищной сложности языка, благодаря которой практически невозможно создать быстрый и надежный компилятор полностью реализующий стандарт, а в происках злобного Б.Гейтса, ненавистника С++ и любителя бейсика.
или не успели всрок доделать к выпуску релиза
именно последним, на мой взгляд, объясняется, например, отсутствие generic'ов в cs1.0
По-моему этого просто нет в стандарте
Кстати я не фанат С++. У этого языка очень много недостатков. Но мне нравится его мощь, выразительность и сложность(в хорошем смысле)
2. стандарт C++ с частичной специализацией был принят недавно - в 99-году
3. даже, примерно, в 2002 году единственным компилятором поддерживающим полностью стандарт был Comeau (это к слову о сложности).
3) А он export шаблонов умеет? Тогда респект ему.
думаю с последних версиях VC++ они были заняты прикручиванием дотНЕТ к языку
AFAIK, он это еще в 2002 умел.
Оставить комментарий
buka
Хочется сделать шаблон <int a, int b>, а потом уточнить до <int a, 0>. Что-то вроде такого:Какой-нибудь компилятор это поддерживает? (Желательно и внутри другого шаблона...)