boost::function und boost::bind
-
Hi!
Folgendes:
void f(const std::vector<int>& v); boost::function<void()> getF() { std::vector<int> i; // i füllen return boost::bind(f, i); } void f(const std::vector<int>& v) { // kann ich hier v ohne weiteres benutzen? } int main() { boost::function<void()> bf = getF(); bf(); }in getF() binde ich ein stack-Objekt an eine Funktion. Danach wird die Funktion verlassen, das Objekt also zerstört.
Kann ich nun v in f benutzen oder ist das undefiniert? Es könnte ja sein, dass im Funktionsobjekt eine Kopie von v abgelegt wurde.
Es klappt, aber ich bin mir nicht sicher, ob das immer klappt.
-
Ja, kannste Benutzen. Bind macht eine Kopie.