Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=8150423&src=arc&showlite=l
Дата изменения: Unknown
Дата индексирования: Tue Feb 26 22:16:47 2013
Кодировка: Windows-1251
C++: typedef для template class'ов - Public forum of MSU united student networks
Technical >> Development (Archive)

Страницы: 1 | (5)
___ : Re: C++: typedef для template class'ов  [re:Rad]   10.12.2008 00:18    | Reply | Edit |
4
typedef-ом ты компилятор не обманешь :3

'double doublea::value = 1.25;' - это определение члена явно специализированного a<double>, к твоему value оно не имеет никакого отношения

code:
template <typename c> class a { static c value; // 1 }; template<> class a<double> { static double value; // 2 }; typedef a<double> doublea; double doublea::value = 1.25; // определение 2 int main(void) { }


а вот 'template<> double doublea::value = 1.25;' суть явная специализация члена еще не специализированного под дабл шаблона, которая потянет за собой автоштамповку a<double>

т.к. явный и автоматический a<double> исключают друг друга, спутать их невозможно

с и без 'template<>' смысл всегда разный, а вот придумать пример, когда оба варианта компилятся, но с разным результатом мне влом

Rad   [re:___]   10.12.2008 15:59    | Reply | Edit |
0

 
В ответ на:

с и без 'template<>' смысл всегда разный, а вот придумать пример, когда оба варианта компилятся, но с разным результатом мне влом



Если в этот код добавить
code:
template<> double doublea::value = 3.0;
студия выдает:
В ответ на:

error C2998: 'double a<double>::value' : cannot be a template definition




ну и, по большому счету, мне кажется, что использование таких возможностей вносило бы лишнюю путаницу.

Top