init boost :: optional für nicht kopierbare Objekte

Was soll ich tun, um zu initialisieren?boost::optional< T > wenn zugrunde liegender TypT ist nicht standardmäßig konstruierbar, nicht kopierbar / verschiebbar, aber die eigene Instanz kann noch existieren?

Ist es verboten fürboost::optional aus irgendwelchen semantischen Gründen, um eine Mitgliedsfunktion zu haben wietemplate< typename... Args > boost::optional< T >::construct(Args && ...args), das liefert alle Argumente an Ort und Stelleoperator new das Objekt vollständig zu konstruieren (für Nicht-Ref-TypT)? Variante ist es, Nicht-Mitgliederfunktion zu haben wiestd::make_shared< T >.

Es scheint mir, dass mein Problem durch die Verwendung von gelöst werden kannstd::unique_ptr/std::shared_ptrAber in diesem Fall lautet meine Frage: "Warum?boost::optional Fortschritt ist eingefroren? "

Antworten auf die Frage(1)

Ihre Antwort auf die Frage