Nur-Verschieben-Version von std :: function

weilstd::function kopierbar ist, verlangt der Standard, dass Callables, mit denen er erstellt wurde, auch kopierbar sind:

n337 (20.8.11.2.1)

template<class F> function(F f);

Benötigt:F soll CopyConstructible sein.f Für Argumenttypen muss Callable (20.8.11.2) seinArgTypes und RückgabetypR. Der Kopierkonstrukteur und der Destruktor von A dürfen keine Ausnahmen auslösen. "

Dies impliziert, dass es nicht möglich ist, eine zu bildenstd::function von einem nicht kopierbaren Bindungsobjekt oder einem Lambda, das einen Nur-Bewegungstyp erfasst hat, wie zstd::unique_ptr.

Es scheint möglich, einen solchen Nur-Verschieben-Wrapper für Nur-Verschieben-Callables zu implementieren. Gibt es eine Standardbibliothek? Nur verschieben?std::function Oder gibt es eine allgemeine Problemumgehung für dieses Problem?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage