模板模板函数实例化
template template function 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 ; /* ... */ }
;
通过显式实例化
template void func < CLASS_TEMPLATE > () ;
您正在有效地执行此操作:
template <>
void func<CLASS_TEMPLATE>() { }
无需具有模板参数即可CLASS_TEMPLATE
执行此操作。
相关文章:
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 对象实例化调用构造函数的次数太多
- 如何使用非默认构造函数实例化模板化类
- 为什么 gcc 和 clang 为函数模板的实例化生成不同的符号名称?
- 模板化类构造函数的模板实例化
- 何时需要实例化函数模板定义?
- clang:使用 O3 导出隐式实例化函数的符号
- 如何调用模板函数的每个实例化函数
- 使用泛型类型显式实例化函数模板
- 使用自动>decltype方法显式实例化函数
- MSVC 编译器实例化函数模板的默认定义,即使存在专用化
- 如何使用模板模板参数显式实例化函数
- 实例化函数模板的编译问题
- Lua到c++,用于实体修改的实例化函数
- 当类型参数为空时,无法实例化函数模板
- 调用实例化函数时发生链接器错误
- 实例化函数的多个模板并在运行时选择的通用解决方案
- 使用不完整类型显式实例化函数模板
- 实例化函数模板时出错
- 禁止使用迭代器形参实例化函数模板