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中。
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
