标准库bind函数中使用占位符placeholders

placeholders ,占位符。表示新的函数对象中参数的位置。当调用新的函数对象时,新函数对象会调用被调用函数,并且其参数会传递到被调用函数参数列表中持有与新函数对象中位置对应的占位符。

举个例子:

void function(arg1,arg2,arg3,arg4,arg5)

{

//do something

}

auto g = bind(function,a,b,_2,c,_1);

新的函数对象:g

被调用函数:function

当调用函数对象g时候,函数对象g会调用function函数,并把其参数传给function函数,g的第一个参数会传给function的持有占位符_1的位置,即arg5。第二个参数会传给function的持有占位符_2的位置,即arg3。

void g(X,Y);

相对于调用下面函数

function(function,a,b,Y,c,X);

其中的arg1,arg2,arg4已经被绑定到a,b,c上。

placeholders是一个命名空间,其本身定义在std命名空间中。placeholder中有名字_n (1,2,3,4,……n)。为了使用这些名字,两个命名空间都必须写上。例如:

using namespace std::placeholders::_1;

与bind函数一样,placeholders命名空间也定义在functional中。

版权声明:本文为博主原创文章,未经博主允许不得转载。

上一篇:Spring拓展接口之BeanFactoryPostProcessor,占位符与敏感信息解密原理


下一篇:Hibernate占位符警告:use named parameters or JPA-style positional parameters instead.