C++ 函数对象与回调:深入探索与实践
1. 模板编译机制与函数调用
在 C++ 中,模板是一种编译时机制。这意味着编译器清楚模板 FunctionReturningIntWrapper 的非类型参数 FP 被替换的值。基于此,大多数 C++ 实现能够将看似间接的调用转换为直接调用。若函数为内联函数,且在仿函数调用点其定义可见,那么该调用很可能会被内联处理。
2. 内省机制
在编程领域,内省指的是程序自我检查的能力。对于仿函数而言,了解其接受的参数数量、返回类型以及第 n 个参数类型等信息往往是很有用的。
2.1 分析仿函数类型
我们构建的框架主要处理类类型的仿函数,并要求它们提供以下信息:
- 仿函数的参数数量(通过成员枚举常量 NumParams 表示)
- 每个参数的类型(通过成员 typedef Param1T , Param2T , Param3T , … 表示)
- 仿函数的返回类型(通过成员 typedef ReturnT 表示)
例如, PersonSortCriterion 可改写为如下形式以适配该框架:
class PersonSortCriterion {
public:
enum { NumParams = 2 };
typedef
超级会员免费看
订阅专栏 解锁全文
424

被折叠的 条评论
为什么被折叠?



