Với Boost tôi có thể tạo ra một tùy chọn tại chỗ với: Làm thế nào để giải phóng std :: thử nghiệm :: tùy chọn?
boost::optional<boost::asio::io_service::work> work = boost::in_place(boost::ref(io_service));
Và buông tha nó với:
work = boost::none;
Với C++ 14/hỗ trợ thực nghiệm, tôi thay vì có thể xây dựng một tùy chọn trong -place với:
std::experimental::optional<boost::asio::io_service::work> work;
work.emplace(boost::asio::io_service::work(io_service));
Nhưng tôi đang ở một mất mát cho làm thế nào để buông tha nó ...
Trong mọi trường hợp, cách duy nhất (ish) bạn có thể tạo đối tượng kiểu 'nullopt_t' là bằng cách sao chép' nullopt'. –
@LucDanton ... hoặc sao chép một đối tượng kiểu 'nullopt_t' được khởi tạo bằng cách sao chép' nullopt'. – Columbo
Và như vậy, cuối cùng, tất cả đều đi xuống 'nullopt'. –