版权所有 © 2003-2007 Fernando Luis Cacciola Carballal
版权所有 © 2014-2024 Andrzej Krzemieński
根据 Boost 软件许可证,版本 1.0 分发。(请参阅随附文件 LICENSE_1_0.txt 或复制于 https://boost.ac.cn/LICENSE_1_0.txt)
类模板 optional
是一个包装器,用于表示“可选”(或“可为空”)对象,这些对象可能(尚)不包含有效值。可选对象提供完整的值语义;它们适合按值传递并在 STL 容器内使用。这是一个仅包含头文件的 C++11 库。
假设我们要从配置文件中读取一个表示某个整数值的参数,我们称之为 "MaxValue"
。此参数可能未指定;这种情况并非错误。不指定该参数是有效的,在这种情况下,程序应该表现得略有不同。此外,假设类型 int
的任何可能值都是 "MaxValue"
的有效值,因此我们不能仅使用 -1
来表示配置文件中缺少该参数。
这是使用 boost::optional
解决此问题的方法
#include <boost/optional.hpp> boost::optional<int> getConfigParam(std::string name); // return either an int or a `not-an-int` int main() { if (boost::optional<int> oi = getConfigParam("MaxValue")) // did I get a real int? runWithMax(*oi); // use my int else runWithNoMax(); }