我正在使用 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 都返回布尔值,并且当有人尝试访问该值并忘记 *.