Con Boost posso creare un optional sul posto con: Come disattivare std :: experimental :: facoltativo?
boost::optional<boost::asio::io_service::work> work = boost::in_place(boost::ref(io_service));
E disimpegnarsi con:
work = boost::none;
Con C++ 14/supporto sperimentale, posso invece costruire un opzionale -Place con:
std::experimental::optional<boost::asio::io_service::work> work;
work.emplace(boost::asio::io_service::work(io_service));
Ma io sono in perdita per il modo di liberarla ...
In ogni caso l'unico modo (ish) di costruire un oggetto di tipo 'nullopt_t' è copiando' nullopt'. –
@LucDanton ... o copiare un oggetto di tipo 'nullopt_t' che è stato inizializzato copiando' nullopt'. – Columbo
E così, alla fine, tutto si riduce a 'nullopt'. –