Re: typedef with template deduction...
От: Angler Россия  
Дата: 27.12.09 15:19
Оценка:
Здравствуйте, Caracrist, Вы писали:

C>нужно на выходе получить -1 для double и значение по умолчанию для всех остальных. При этом используется не сам тип double в сигнатуре функций, а локальный typedef, который по воле случая к нему приводится.

C>Этот частный случай можно обойти. Вопрос как вообще это правильно делается?
C>Речь идёт о том когда для некоторых шаблонных функций нужна спецяльная реализация, и для остальных общая, но при этом типы заданы через typedef.

Частичных специализаций функций вроде как нет в языке. Попробуйте использовать частичную специализацию классов:


template<typename T> struct xxx;

template<typename U>
struct xxx<S<U>>
{    
    static void foo(U &t)
    {
        t = U();
    }
};


template<>
struct xxx<S<double>>
{
    static void foo(double &t)
    {
        t = -1;
    }
};


template<typename T>
void S<T>::foo(typename S<T>::resultT &t)
{
    xxx<S<T>>::foo(t);
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.