std::
placeholders
命名空间 <functional>
namespace placeholders {
extern /* unspecified */ _1;
extern /* unspecified */ _2;
extern /* unspecified */ _3;
// ...
}
|
绑定参数占位符
这个命名空间声明了一个未指定数量的对象:_1,_2,_3,…,用于在函数绑定调用中指定占位符。
当调用bind返回的函数对象时,占位符_1的实参被调用中的第一个实参替换,_2被调用中的第二个实参替换,以此类推……例如:
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是一个自然数)。
🍄 另请参阅