typedef with template deduction...
От: Caracrist https://1pwd.org/
Дата: 27.12.09 13:43
Оценка:
template<typename T>
struct S
{
typedef T resultT;
void foo(resultT&t);
};

template<typename T>
void xxx_foo(typename S<T>::resultT&t)
{
t = T();
}
void xxx_foo(S<double>::resultT&t)
{
t = -1;
}
template<typename T>
void S<T>::foo(typename S<T>::resultT&t)
{
xxx_foo<T>(t);
}



int main()
{
double dd;
S<double> s;
s.foo(dd);
S<void*> s2 ;
void* vp;
s2.foo(vp);
cout << dd << endl << vp;
return 0;
}

нужно на выходе получить -1 для double и значение по умолчанию для всех остальных. При этом используется не сам тип double в сигнатуре функций, а локальный typedef, который по воле случая к нему приводится.
Этот частный случай можно обойти. Вопрос как вообще это правильно делается?
Речь идёт о том когда для некоторых шаблонных функций нужна спецяльная реализация, и для остальных общая, но при этом типы заданы через typedef.
~~~~~
~lol~~
~~~ Single Password Solution
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.