Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Специализация метода шаблонного класса


Автор: djamshud 16.5.2010, 22:53
Код

template<typename T,typename TT,int vv>
class ss{
public:
void print();
};


Предположим, хочу для TT==bool реализовать особую функцию принт. Как у меня получается сделать:

Код

template<typename T,typename TT,int vv>
void ss<T,TT,vv>::print(){
printf("aaa\n");}

template<typename T,int vv>// I
class ss<T,bool,vv>{       // don't
public:                    // want
void print();              // this
};                         // class

template<typename T,int vv>
void ss<T,bool,vv>::print(){
printf("bbb\n");}


Возможно ли опустить специализацию всего шаблона, а специализировать лишь его часть - саму принт? (фактически убрать откомментированный код и оставить нечто вроде самой функции из второго фрагмента). У самого закралось предположение, что сделать не получится, но в гугле ни подтверждения, ни опровержения не нашел.

Автор: djamshud 17.5.2010, 03:40
Методом гугления, проб и ошибок пришел к тому, что частичной специализации членов шаблонных классов в с++ (или в ГЦЦ?) нет. Пришлось расставить костыли из перегруженных функций.

Автор: JackYF 20.5.2010, 15:54
Цитата(djamshud @  17.5.2010,  02:40 Найти цитируемый пост)
частичной специализации членов шаблонных классов в с++ (или в ГЦЦ?) нет.

Да, в С++ их нет. Решается через наследование промежуточного класса.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)