шаблон шаблон функции

template < typename T >
class CLASS_TEMPLATE { } ;

template < template < typename T > class CLASS >
void funcI ( ) { }

template void funcI < CLASS_TEMPLATE > () ;

как компилятор создает экземпляр функции, если у него нет подсказки о аргументах шаблона CLASS_TEMPLATE.?

================================================== ======================
мои предположения о шаблоне шаблона были неверными.

формальный параметр шаблона из funcI это шаблон с одним параметром шаблона.

template < template < typename... > class CONTAINER >
void funcII ( )
{
CONTAINER< int > container0 ;
CONTAINER< float > container1 ;
/* ... */
}

template void funcII < std::vector > () ; будет создавать funcII шаблон как { std::vector< int > container0 ; std::vector< float > container1 ; /* ... */ } ;

2

Решение

Явным образом

template void func < CLASS_TEMPLATE > () ;

Вы эффективно делаете это:

template <>
void func<CLASS_TEMPLATE>() { }

Там нет необходимости иметь параметры шаблона для CLASS_TEMPLATE сделать это.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector