namespace
<functional>

std::placeholders

namespace placeholders {  extern /* unspecified */ _1;  extern /* unspecified */ _2;  extern /* unspecified */ _3;  // ...}
Bind 参数占位符
此命名空间声明了数量未指定但足以满足所有可能占位符的对象的集合:_1_2_3 等等。它们用于在调用函数 bind 时指定占位符。

当调用 bind 返回的函数对象时,第一个占位符 _1 将被调用列表中的第一个参数替换,_2 将被调用列表中的第二个参数替换,依此类推。例如:
1
2
3
using namespace std::placeholders;
auto bound_fn = std::bind (fn,100,_1);
bound_fn(5);  // calls fn(100,5), i.e.: replacing _1 by the first argument: 5 

这些占位符对象的类型未指定(它取决于库的实现,请参阅 is_placeholder),但在所有情况下,其类型至少应为*无异常默认可构造*(nothrow default-constructible)和*无异常拷贝可构造*(nothrow copy-constructible)。赋值操作符或额外的构造函数是否支持是实现定义的,但任何*拷贝赋值*或*移动构造函数*也必须是*无异常*的。

bind 的调用用作另一个 bind 调用中的子表达式时,占位符是相对于最外层的 bind 表达式而言的。

对象

_1
被函数调用中的第一个参数替换。
_2
被函数调用中的第二个参数替换。
_N
被函数调用中的第 N 个参数替换(其中 N 是一个自然数)。

另见