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.