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

What is the difference between std::invoke and std::function?

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

std::invoke 是激活 any 可调用对象的通用方法 - 一个 std::function,一个指向函数的指针,一个指向成员函数的指针,一个函数对象等。无需知道您正在处理的是哪一个(也无需使用不同的语法)。它主要用于泛型编程(模板)。

另一方面,标准函数是可调用对象的通用容器 "thing"。完全不一样..