c++ - 模板函数:是否有接受任何参数类型的语法,就像 'auto' 对 lambdas 所做的那样?
问题描述
我正在尝试编写一个接受复杂参数的函数。假设它可以是一个类,也可以是一个类模板。函数内部的代码对于所有参数都是相同的,我不需要在任何地方引用参数的类型。所以,我想写这样的东西:
auto func(auto& someComplicatedClassInstance) {
return someComplicatedClassInstance.someMemberFunc();
}
我不能只写template <typename T>
,因为如果 T 本身是一个模板,它就行不通,而auto
函数参数在 C++ 中不是一个东西。制作func
lambda 是唯一的方法吗?为 lambdas 启用相同的编译器功能而不是普通函数似乎很奇怪。在我的具体情况下,我正在编写一个重载,operator<<
所以我不能让它成为一个 lambda。
解决方案
您可以使用函数模板:
template <typename T>
auto func(T&& someComplicatedClassInstance) {
return std::forward<T>(someComplicatedClassInstance).someMemberFunc();
}
推荐阅读
- java - 不可变类的存储区域
- php - PHP IF 语句要使用 Else If 还是另一个 IF 语句?
- python-3.x - 如何使用 python 运行管理命令提示符?
- dask - dask read_parquet 内存不足
- spring-boot - Spring Boot JPA find, filter
- javascript - 如何在VSC中快速找到TS函数的来源而不需要手动通过node_modules?
- ios - SwiftUI 中的 $varName 和 _varName 有什么区别
- python - 腐蚀数组的几层
- tensorflow - tf.estimator 服务功能失败
- ajax - 有没有办法在 Primefaces 数据表中捕捉 livescroll 事件?