Ein einfaches Beispiel, das erklärt, wie std::bind
kann wie folgt verwendet werden:Wie kann std :: bind verwendet werden?
Angenommen, wir haben eine Funktion von 3 Argumente: f3 (x, y, z). Wir wollen eine Funktion von 2 Argumenten haben, die wie folgt definiert ist: f2(x,y) = f3(x,5,y)
. In C++ wir es leicht mit std::bind
tun können:
auto f2 = std::bind(f3, _1, 5, _2);
Dieses Beispiel ist mir klar: std::bind
nimmt eine Funktion als erstes Argument und dann dauert es n andere Argumente, wobei n die Anzahl der Argumente der Funktion das ist das erste Argument für std::bind
.
Allerdings fand ich eine andere Verwendung von bind:
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;
}
Es ist klar, dass foo
ein Argument hat und mit std::bind
es wurde i
gesetzt. Aber warum verwenden wir ein anderes Paar Klammern nach (foo, i)
? Und warum verwenden wir keine Ausgabe der std::bind
? Ich meine, warum haben wir nicht auto f = std::bind(foo, i)
?
Was in aller Welt ist '\\\'? –
Es sollte ein Kommentar sein: // – Roman