【发布时间】:2017-01-28 16:22:22
【问题描述】:
我正在使用 std::optional 编写一些代码,我想知道 C++17 的“带有初始化程序的 if 语句”是否能够帮助解包值?
std::optional<int> optionalInt = GetOptionalInt();
我在这里编写函数Unpack:
if( auto [value, has_value] = optionalInt.Unpack(); has_value )
{
// Use value here.
}
但是,我的问题是。 C++17 'if statement with initializer' 在这里有帮助吗?如果是这样,它将如何编码?
更新,这实际上主要是使用 optional 时的一个问题,这非常容易被误用,因为 optional 和 *optional 都返回 bools,并且当有人尝试访问该值并忘记 *.
【问题讨论】:
-
"if" 是一个语句,而不是表达式。
标签: c++ c++17 stdoptional