С Boost, можно создать дополнительный в месте с: Как отключить std :: experimental :: optional?
boost::optional<boost::asio::io_service::work> work = boost::in_place(boost::ref(io_service));
И расцепить его:
work = boost::none;
С C++ 14/экспериментальная поддержка, я могу вместо этого построить дополнительный в -местной с:
std::experimental::optional<boost::asio::io_service::work> work;
work.emplace(boost::asio::io_service::work(io_service));
Но я в растерянности, как расцепить его ...
В любом случае единственным способом (ish) вы можете построить объект типа «nullopt_t', копируя« nullopt ». –
@LucDanton ... или копирование объекта типа 'nullopt_t', который был инициализирован путем копирования' nullopt'. – Columbo
Итак, в конечном итоге все сводится к 'nullopt'. –