模板模板函数实例化

时间:2016-01-09 20:45:50

标签: c++ templates explicit-instantiation

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 ; /* ... */ };

1 个答案:

答案 0 :(得分:1)

明确实例化

template void func < CLASS_TEMPLATE > () ;

你实际上是这样做的:

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

CLASS_TEMPLATE无需使用模板参数来执行此操作。