pab,std::placeholders::_2,std::placeholders::_1));//将成员函数变为普通函数cb3(2,3);//调用函数 (输入方式没变,但输出变反)//输出为 TAg a[3],b[2]}{//或者都一样, 可以自由安排TsCbcb4(std::bind(&TAg::set,pab,std::placeholders::_1,std::placeholders::_1));...
*this,std::placeholders::_1, std::placeholders::_2);//正确 std::function<void(int, std::vector<int>&)> f_bp = bind_pointer;//编译报错 std::function<void(int, std::vector<int>
autofun1=std::bind(TestFunc,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3); autofun2=std::bind(TestFunc,std::placeholders::_2,std::placeholders::_3,std::placeholders::_1); autofun3=std::bind(TestFunc,std::placeholders::_1,std::placeholders::_2,98.77); 1. 2....
/*see below*/_2; . . /*see below*/_N; Thestd::placeholdersnamespace contains the placeholder objects[_1, ..., _N]whereNis an implementation defined maximum number. When used as an argument in astd::bindexpression, the placeholder objects are stored in the generated function object, and...
{MyFunctionObject myObject;// 绑定函数对象和参数auto func1=std::bind(myObject,1,2,3);// 部分应用函数auto func2=std::bind(myObject,std::placeholders::_1,2,std::placeholders::_2);std::cout<<"Result 1: "<<func1()<<std::endl;// 输出:6std::cout<<"Result 2: "<<func2(10,20...
std::placeholders::_1 代表可调用对象的第一个参数,_2就代表第二个参数,依此类推。 当用作类成员函数的绑定时,第一个参数仍然是作为类成员的可调用对象引用,第二个参数则是对象的指针,而第三个参数开始对应可调用对象的参数表。 同样使用 std::placeholders::_* 依次向后推。
std::placeholders::_2和std::placeholders::_1表示参数的顺序,比如, 上面的代码示例中, 3是func的第一个参数,但是,func在声明时,指定了第一个参数的位置,放在了最后。 所以,上面的代码输出结果:a=4, b=2, c=3。 注意 std::bind的函数参数默认使用的是拷贝, 如果需要使用引用,则需要配合std::ref。
std::bind绑定普通函数:std::bind(&函数名,std::placeholders::_1, ...),绑定普通成员函数时,参数1是函数名,后续是函数的参数列表,参数的书写方式是std::placeholders::_1,std::placeholders::_2,...; std::bind类成员函数:std::bind(&类名::函数名,类对象指针,std::placeholders::_1, ...),绑定...
#include #include <functional> class a{ std::map < const char*, Property*, std::function<bool(const char* a, const char* b)> > propertyStore{ std::bind([](const char* a, const char* b) {return std::strcmp(a,b) < 0;},std::placeholders::_1,std::placeholders::_2) }; }...
std::placeholders::_1, std::placeholders::_2)); return 0; }编译器报错如下:test.cc:41...