Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>буду краток. возможно ли такое:
Нет. Для функций запрещена частичная специализация(интересно почему)
Но можно так
template<typename T>
struct f_t
{
static void f()
{
}
};
template<typename T, typename A>//Не забывает что у вектора естьл еще и аллокаторstruct f_t<std::vector<T, A> >
{
static void f() //специализация f для любого вектора
{
}
};
template<typename T>
void f()
{
f_t<T>::f();
}
Но и это решение не 100%ное ибо некоторые реализации STL могут содержать дополнительные шаблонные параметры. Но на практике можно использовать.
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, davenger, Вы писали:
D>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>буду краток. возможно ли такое: ЗХ>>
ЗХ>>template<typename T>
ЗХ>>void f()
ЗХ>>{
ЗХ>>}
ЗХ>>template<typename T>
ЗХ>>void f<std::vector<T> >() //специализация f для любого вектора
ЗХ>>{
ЗХ>>}
ЗХ>>
D>Для вектора и ваще для стандартных контейнеров это делать нельзя, а вот если б вместо вектора был другой шаблон с ровно одним параметром — то всё ок.
Сорри перепутал с template template параметром.
Т.е. всё ок.
Здравствуйте, davenger, Вы писали:
D>Для вектора и ваще для стандартных контейнеров это делать нельзя,
почему?
D>а вот если б вместо вектора был другой шаблон с ровно одним параметром — то всё ок.
как?
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>>template<typename T> // бекоз!!! ЗХ>>>void f<std::vector<T> >() //специализация f для любого вектора ЗХ>>>{ ЗХ>>>}
ЗХ>>>[/c]
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Здравствуйте, davenger, Вы писали:
D>>Для вектора и ваще для стандартных контейнеров это делать нельзя, ЗХ>почему?
D>>а вот если б вместо вектора был другой шаблон с ровно одним параметром — то всё ок. ЗХ>как?
Забыл про частичную специализацию ф-ций
Склероз...
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>буду краток. возможно ли такое: WH>Нет. Для функций запрещена частичная специализация(интересно почему)
template<typename T>
void f()
{
}
template<typename T>
void f<std::vector<T> >() //специализация f для любого вектора
{
}