std :: invoke和std :: function有什么区别?

时间:2016-09-08 19:25:17

标签: c++ callable c++17

当我们已经std::invoke时,为什么我们需要std::function?他们之间有什么区别?两者都用于调用可调用对象。添加新模板有什么意义?

1 个答案:

答案 0 :(得分:8)

std::invoke是激活任何可调用的通用方法 - 一个std::function,一个指向函数的指针,一个指向成员函数的指针,一个函数对象等。无需知道你正在处理哪一个(并且不必使用不同的语法)。它在泛型编程(模板)中非常有用。

另一方面,标准函数是可调用“事物”的通用容器。完全不一样..