std::placeholders::_1, std::placeholders::_2, ..., std::placeholders::_N
来自cppreference.com
< cpp | utility | functional
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Defined in header <functional>
|
||
| extern /*unspecified*/ _1; extern /*unspecified*/ _2; |
||
std::placeholders命名空间包含了占位符对象
[_1, . . . _N]N是实现定义的最大数量.Original:
The std::placeholders namespace contains the placeholder objects
[_1, . . . _N] where N is an implementation defined maximum number.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
使用时,作为参数在std::bind表达,占位符对象存储在生成的函数对象,未绑定的参数调用时,函数对象,每个占位符被替换为相应的第N个未绑定的参数
_N.Original:
When used as an argument in a std::bind expression, the placeholder objects are stored in the generated function object, and when that function object is invoked with unbound arguments, each placeholder
_N is replaced by the corresponding Nth unbound argument.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
占位符对象的类型是
DefaultConstructible和CopyConstructible,它们的默认复制/移动的构造函数不抛出异常,和任何占位符_N,std::is_placeholder<decltype(_N)>定义的类型,是来自std::integral_constant<int, N>.Original:
The types of the placeholder objects are
DefaultConstructible and CopyConstructible, their default copy/move constructors do not throw exceptions, and for any placeholder _N, the type std::is_placeholder<decltype(_N)> is defined and is derived from std::integral_constant<int, N>.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 为例
下面的代码显示了一个占位符参数的函数对象的创建.
Original:
The following code shows the creation of function objects with a placeholder argument.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <functional> #include <string> #include <iostream> void goodbye(const std::string& s) { std::cout << "Goodbye " << s << '\n'; } class Object { public: void hello(const std::string& s) { std::cout << "Hello " << s << '\n'; } }; int main(int argc, char* argv[]) { typedef std::function<void(const std::string&)> ExampleFunction; Object instance; std::string str("World"); ExampleFunction f = std::bind(&Object::hello, &instance, std::placeholders::_1); // equivalent to instance.hello(str) f(str); f = std::bind(&goodbye, std::placeholders::_1); // equivalent to goodbye(str) f(str); return 0; }
Output:
Hello World Goodbye World
[编辑] 另请参阅
| (C++11) |
绑定一个或多个参数的函数对象 Original: binds one or more arguments to a function object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数模板) |
| (C++11) |
指示一个对象是一个标准的占位符或可以用作1 Original: indicates that an object is a standard placeholder or can be used as one The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (类模板) |