c++ - std::invoke 和 std::function 有什么区别?

标签 c++ callable c++17

<分区>

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

最佳答案

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

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

关于c++ - std::invoke 和 std::function 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39398740/

相关文章:

c++ - 将结构转换为 uint8_t 的 constexpr 数组

c++ - Boost Spirit 解析器在输入时崩溃

c++ - 相等字符串(数组的字符串和字符串)-c++

php打印可调用函数

java - Spring MVC 如何从 Controller 使用 AsyncTaskExecutor

c++ - 无法推导函数参数的非类型模板参数

c++ - 高效可变参数等于任何函数

c++ - 使用 std::fill 与 std::integer_sequence 进行 std::array 填充

C++11,返回 vector 函数风格的 move 语义

python - 在 Python 中动态分配函数实现