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.


Anmelden zum Antworten