Boost中的boost::optional

来源:互联网 发布:淘宝店铺公告模板 编辑:程序博客网 时间:2024/06/05 12:48
<span style="background-color: rgb(255, 255, 255);"></span>
#include <iostream>#include "boost/optional.hpp"#include <cassert>namespace bo = boost;int main(){// constructor bo::optional<int> a;bo::optional<int> b(bo::none);assert(a == b);assert(!a.is_initialized());assert(!b.is_initialized());bo::optional<int> c(3);assert(c == 3);assert(c.is_initialized());bo::optional<int> d(true, 4);assert(d == 4);assert(d.is_initialized());bo::optional<int> e(false, 4);assert(e == bo::none);assert(!e.is_initialized());bo::optional<int> f = 1;assert(f.is_initialized());// member functiona = 2;if (a){std::cout << "a is is_initialized" << std::endl;}a.reset();assert(!a);//  std::cout << a.get() << std::endl;// ERROR!程序崩溃//  std::cout << "a.value(): " << a.value() << std::endl;// 程序异常a = 300; // 确保在使用get和value前a已经被初始化std::cout << "a.get(): " << a.get() << std::endl;// OKstd::cout << "operator * : " << *a << std::endl;// try ... catchstd::cout << "a.value(): " << a.value() << std::endl;// operator->()std::cin.get();}

0 0
原创粉丝点击