Rio*_*iot 5 c++ optional boost-optional c++14
使用Boost,我可以创建一个可选的就地:
boost::optional<boost::asio::io_service::work> work = boost::in_place(boost::ref(io_service));
Run Code Online (Sandbox Code Playgroud)
并解除它:
work = boost::none;
Run Code Online (Sandbox Code Playgroud)
有了C++ 14 /实验支持,我可以使用以下方法构建一个可选的就地:
std::experimental::optional<boost::asio::io_service::work> work;
work.emplace(boost::asio::io_service::work(io_service));
Run Code Online (Sandbox Code Playgroud)
但我对如何脱离它感到茫然......
work = std::experimental::nullopt;
Run Code Online (Sandbox Code Playgroud)
应该脱离work.
该库基本TS指定[optional.nullopt]:
struct
nullopt_t是一个空结构类型,用作唯一类型,表示可选对象的脱离状态.
有一个合适的赋值运算符,[optional.object.assign]:
Run Code Online (Sandbox Code Playgroud)optional<T>& operator=(nullopt_t) noexcept;效果:如果
*this被调用则val->T::~T()销毁包含的值; 否则没有效果.
为了避免nullopt_t每次构造一个对象,已经声明了这种类型的常量:
struct nullopt_t{见下文};
constexpr nullopt_t nullopt(未指明);