[c++] специализация шаблона шаблоном

serge18

можно ли специализировать некотурую темплейтную функцию темплейтом?
Что-то в таком роде:

template <class X>
class Y
{};

template <class A>
void foo;

template <class B>
void foo< Y<B> > {}

грубо говоря я хочу использовать foo вот так: foo<int> foo< Y<int> > foo< Y<bool> > и хочу написать один кусок кода для последних двух вызовов.
возможно ли такое?

PITACHOK

да, а в чем проблема?

Serab

template <> void foo< Y<B> > {}
все-таки тут имеется в виду
template <class B> void foo< Y<B> > {}
так нельзя, это частичная специализация функций.
Но можно засунуть в класс статический метод и делать специализацию класса, а для выведения типа обернуть в функцию уже.

Maurog

а в чем проблема?
проблема в том, что для функций нельзя написать частичную специализацию

serge18

да, я это и имел в виду =) собственно хотел узнать как люди в таких случаях поступают.
спасибо, буду шатать классы или посмотрю как этого можно избежать.

PITACHOK

проблема в том, что для функций нельзя написать частичную специализацию
но обычная специализация для них отлично пишется,
и ТС привел именно такой пример

Serab

нет, не такой (читай дальше, он забыл дописать параметр для функций возможна только полная специализация, еще возможна перегрузка, но не тут (нету параметров)
Оставить комментарий
Имя или ник:
Комментарий: