Jednym prostym przykładem, który wyjaśnia, w jaki sposób można używać , jest:W jaki sposób można użyć std :: bind?
Załóżmy, że mamy funkcję 3 argumentów: f3 (x, y, z). Chcemy mieć funkcję 2 argumentów, która jest zdefiniowana jako: f2(x,y) = f3(x,5,y)
. W C++ możemy łatwo zrobić z std::bind
:
auto f2 = std::bind(f3, _1, 5, _2);
Ten przykład jest dla mnie jasne: std::bind
wykonuje funkcję jako pierwszy argument, a następnie zajmuje n inne argumenty, gdzie n to liczba argumentów funkcji jest to pierwszy argument dla std::bind
.
Jednak znalazłem innego wykorzystania wiąże:
void foo(int &x)
{
++x;
}
int main()
{
int i = 0;
// Binds a copy of i
std::bind(foo, i)(); // <------ This is the line that I do not understand.
std::cout << i << std::endl;
}
Jest oczywiste, że foo
ma jeden argument i std::bind
została ona ustawiona na i
. Ale dlaczego używamy kolejnej pary nawiasów po (foo, i)
? I dlaczego nie używamy wyjścia z std::bind
? Chodzi mi o to, dlaczego nie mamy auto f = std::bind(foo, i)
?
Co na ziemi jest "\\\"? –
To miał być komentarz: // – Roman