std::invoke 和 std::function 有什么区别?
What is the difference between std::invoke and std::function?
我们已经有 std::function
,为什么还需要 std::invoke
?它们之间有什么区别?两者都用于调用可调用对象。添加新模板有什么意义?
std::invoke
是激活 any 可调用对象的通用方法 - 一个 std::function
,一个指向函数的指针,一个指向成员函数的指针,一个函数对象等。无需知道您正在处理的是哪一个(也无需使用不同的语法)。它主要用于泛型编程(模板)。
另一方面,标准函数是可调用对象的通用容器 "thing"。完全不一样..
我们已经有 std::function
,为什么还需要 std::invoke
?它们之间有什么区别?两者都用于调用可调用对象。添加新模板有什么意义?
std::invoke
是激活 any 可调用对象的通用方法 - 一个 std::function
,一个指向函数的指针,一个指向成员函数的指针,一个函数对象等。无需知道您正在处理的是哪一个(也无需使用不同的语法)。它主要用于泛型编程(模板)。
另一方面,标准函数是可调用对象的通用容器 "thing"。完全不一样..