使用C ++ 17,我们得到std::optional
,这是表达可空类型的有用包装。
我可以用它来处理错误吗?这样做很有吸引力:
optional<int> Compute()
{
//... compute something valid...
return std::nullopt; // error!
}
这是一个不错的选择吗?是不是它返回一个空指针?
人们报告的问题是,如果发生错误,您将丢失一条消息。所以返回一些状态代码可能会更好。
其他替代方案:
std::variant<Value, errorCode>
std::pair<Value, errorCode