泛化仿函数:
- 可封装任何处理请求: 可接受函数指针,成员函数指针,仿函数,甚至其他泛化仿函数。
- 具备类型安全性(typesafe)
- 是一种带有“value”语义的对象,充分支持拷贝,赋值,传值。泛化仿函数允许任意拷贝,并且不会暴漏其虚函数。
功能:
- 将"处理请求"存储为数值,作为参数传递,并可以在远离其创建点之处调用
- 在对象中存储一个处理请求(processing request)及其某些或者全部的参数,可以任意地传递,调用它
- 串联多个推迟的调用动作,令他们依次执行
Loki中泛化仿函数最多支持15个参数。
下面是Loki库中泛化仿函数测试程序:
test_static_function(); //测试静态函数
test_zero_args(); //测试void f(void)
test_one_arg(); //测试type f(type)
test_two_args(); //测试 type(type, type)
test_member_functions(); //测试类成员函数
test_ref(); //测试函数引用
//类型安全检测:
test_emptiness();
test_exception();
test_implicit();
test_call();