在 C 语言中,如何将模板函数用作模板参数以实现代码重用维护通用功能,特别是当涉及的函数本身也是模板时?
要解决此问题,请使用模板模板参数。主要概念是模板参数不能直接包含模板模板函数,因为需要事先实例化。解决方法包括使用虚拟结构来封装模板函数:
template
struct a {
static void foo(T = T()) {}
};
template
struct b {
static void foo(T = T()) {}
};
struct SomeObj {};
struct SomeOtherObj {};
template class T>
void function() {
T::foo();
T::foo();
}
int main() {
function();
function();
}
在此示例中,结构体 a 和 b 实现 foo 方法的模板函数。函数模板采用模板模板参数,允许我们将 a 和 b 模板作为参数传递。在函数内,创建虚拟结构的特定实例,从而能够使用不同的参数类型调用 foo。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3