4.3.5 工厂函数
optional提供一个类似make_pair()、make_shared()的工厂函数make_optional(),可以根据参数类型自动推导optional的类型,用来辅助创建optional对象。它的声明如下:
- optional<T> make_optional( T const& v );
- optional<T > make_optional( bool condition, T const& v );
但make_optional()无法推导出T引用类型的optional对象,因此如果需要一个optional<T&>的对象,就不能使用make_optional()函数。
示范make_optional()函数用法的代码如下:
- #include <boost/optional.hpp>
-
- using namespace boost;
- int main()
- {
- BOOST_AUTO(x, make_optional(5));
- assert(*x == 5);
-
- BOOST_AUTO(y, make_optional<double>((*x > 10), 1.0));
- assert(!y);
- }