Boost を使用すると、次を使用してオプションのインプレースを作成できます。
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));
でもどうやって解除しようか迷ってます…