std::function是C++11标准库的一个模板,它把函数指针的思想加以推广。函数指针只能指涉到函数,而std::function却可以指涉到任何可以调用的对象,即任何可以像函数一样可以实施调用之物。
我们想要创建一个函数指针就必须要指定欲指涉到的函数的型别(即该指针指涉到的函数的签名),类比来看,我们想要创建一个std::function对象就必须指定欲指涉的函数的型别。这一步是通过std::function模板形参来完成的。
//声明一个函数对象func,它可以指涉到任何能用以下述签名调用的对象
bool(const std::unique_ptr<Widget>&,
const std::unique_ptr<Widget>&)//C++11版本的std::unique_ptr<Widget>比较函数签名
//这样定义func
std::function<bool(const std::unique_ptr<Widget>&,
const std::unique_ptr<Widget>&)> func;