官术网_书友最值得收藏!

The std::invoke( ) method

The std::invoke() method can be used to call functions, function pointers, and member pointers with the same syntax:

#include <iostream>
#include <functional>
using namespace std;

void globalFunction( ) {
cout << "globalFunction ..." << endl;
}

class MyClass {
public:
void memberFunction ( int data ) {
std::cout << "\nMyClass memberFunction ..." << std::endl;
}

static void staticFunction ( int data ) {
std::cout << "MyClass staticFunction ..." << std::endl;
}
};

int main ( ) {

MyClass obj;

std::invoke ( &MyClass::memberFunction, obj, 100 );
std::invoke ( &MyClass::staticFunction, 200 );
std::invoke ( globalFunction );

return 0;
}

The preceding code can be compiled and the output can be viewed with the following commands:

g++-7 main.cpp -std=c++17
./a.out

The output of the preceding program is as follows:

MyClass memberFunction ...
MyClass staticFunction ...
globalFunction ...

The std::invoke( ) method is a template function that helps you seamlessly invoke callable objects, both built-in and user-defined.

主站蜘蛛池模板: 越西县| 洱源县| 如东县| 正定县| 凤凰县| 若羌县| 泰安市| 五家渠市| 筠连县| 广昌县| 青海省| 大新县| 沁水县| 张家界市| 龙胜| 东台市| 九寨沟县| 靖边县| 湖州市| 广南县| 牡丹江市| 德惠市| 定州市| 龙泉市| 安乡县| 康平县| 龙游县| 江阴市| 正镶白旗| 扎兰屯市| 唐山市| 桃江县| 疏附县| 林甸县| 沁源县| 靖州| 航空| 晋州市| 怀化市| 封丘县| 和林格尔县|