利用std::bind可以改變可調用對象的參數(shù)數(shù)量和順序。
std::placeholders::_n為占位符,代表新的可調用對象的第n個參數(shù)。
auto g = bind(f, a, b, std::placeholders:_2, c, std::placeholders:_1);
假定f是一個可調用對象,它有5個參數(shù),使用std::bind綁定后,生成新的可調用對象g,它有兩個參數(shù),分別是std::placeholders::_1和std::placeholders::_2。
g的第一個參數(shù)為_1,第二個參數(shù)為_2,對應到f上分別是f的第5個參數(shù)和第三個參數(shù)。
示例:
#include <iostream>
#include <functional>
void printDate(int day, int month, int year)
{
std::cout << year << "/" << month << "/" << day << std::endl;
}
int main()
{
// 使用示例
auto printDateNew = std::bind(printDate, std::placeholders::_2, std::placeholders::_1, 2024);
printDateNew(11, 12);
return 0;
}