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. |
| Заголовочный файл <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; }
Вывод:
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) |
указывает, что объект является стандартным заполнителя или может быть использован как один 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. (шаблон класса) |