19 Stimmen

Umwandlung von boost::function in std::function

Ich aktualisiere einige unserer alten Codes, um C++11-Funktionen anstelle der Boost-Äquivalente zu verwenden. Allerdings ist nicht alles ein einfacher Namespace-Ersatz wie ungeordnete Container und intelligente Zeiger.

Zum Beispiel boost::function hat Methoden empty() y clear() sondern std::function nicht.

Es gibt eine operator() definiert für std::function die ich verwendet habe, um die empty() Referenzen, aber was soll ich anstelle von clear() Referenzen?

Ich habe in Erwägung gezogen, die std::function Zuweisungsoperator und Zuweisung nullptr um es zu löschen, aber ich bin besorgt, dass das unbeabsichtigte Nebenwirkungen haben könnte, die nicht nur die zugrunde liegende Funktion löschen, sondern auch das Objekt unbrauchbar machen.

Offensichtlich wäre die bessere Lösung Standardinitialisierung aller wiederverwendbaren Mitgliedsfunktionsobjekte, so dass es immer einen gültigen Rückruf gibt, der einfach mit einem vom Benutzer bereitgestellten aktualisiert werden kann, aber ich ziele nur auf einen direkten Ersatz der vorherigen Verwendung im Moment nicht eine Codeüberprüfung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X