代码行
void func()
{
cout << "void func()" << endl;
}
在下面这句话中:
function<void()> f = bind(&func);
1. `function<void()>` 是一个函数对象类型,也称为“函数包装器”,可以容纳任意的可调用对象(如函数、lambda表达式等),并且可以延迟调用它。它表示一个无参数且返回 `void` 的函数。
2. `bind(&func)` 用于将 `func` 绑定成一个可调用对象,这个绑定的对象可以适配到不同的函数签名或参数要求。这里,假设 `func` 是一个无参函数,因此 `bind(&func)` 生成的对象也是一个无参、无返回值的可调用对象。
3. `f` 是一个 `std::function<void()>` 类型的对象,它存储了 `bind(&func)` 生成的可调用对象。你可以把 `f` 理解为一个函数的“包装对象”或者“容器”,它保存了一个可以延迟执行的操作。
至于 f的“学名”,它是 函数包装器(Function Wrapper)**,而 `bind` 生成的对象是 **绑定器(Binder)** 或 **适配器** 。
总结:
`function<void()>` 是一个可以存储任何返回类型为 `void`、无参数的可调用对象的容器。
`bind(&func)` 将 `func` 绑定为一个可调用对象,最终存储在 `f` 中。