模板模板函数实例化

template template function instantiation

本文关键字:实例化 函数      更新时间:2023-10-16
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 ; /* ... */ };

通过显式实例化

template void func < CLASS_TEMPLATE > () ;

您正在有效地执行此操作:

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

具有模板参数即可CLASS_TEMPLATE执行此操作。