std::invoke() 是什么
时间: 2024-05-13 16:16:37 浏览: 108
C++11/14 线程的创建与分离的实现
`std::invoke` 是 C++17 中的一个函数模板,它提供了一种通用的方式,可以调用任意可调用对象(函数、函数指针、成员函数、成员函数指针、函数对象等等)。它的语法如下:
```cpp
template< class F, class... Args >
constexpr /*see below*/ invoke_result_t<F, Args...> invoke( F&& f, Args&&... args );
```
其中,`F` 表示可调用对象的类型,`Args...` 表示可调用对象的参数类型,`f` 表示要调用的可调用对象,`args...` 表示传递给可调用对象的参数。
`std::invoke` 的返回值类型是 `invoke_result_t<F, Args...>`,这是一个 C++17 中新引入的类型特征符,它可以推导出可调用对象的返回值类型,具体的定义可以参考 C++17 标准。
`std::invoke` 的作用是简化代码,避免出现大量的重载和模板特化,使代码更加通用和简洁。
阅读全文