C++(17):invoke

C++调用函数有多种形式,普通函数和函数指针使用(),成员函数通过.或->进行调用。

如果在模板中调用不同类型的函数,这会是一个问题,因为调用的形式是不一致的。

C++17引入了invoke,用来从形式上统一函数调用:

#include 
#include 
using namespace std;

auto f1 = [](int a, int b) { return a + b; };

int f2(int a, int b) { return a + b; }

class F{
public:
	int f3(int a, int b) { return a + b; };
};

int main()
{
    cout<

可以看到通过invoke,调用普通函数与成员函数在形式上是一致的了。

另外需要说明的是invoke还支持对类虚函数的多态调用:

#in

你可能感兴趣的:(C/C++,c++)