【发布时间】:2021-06-04 18:23:04
【问题描述】:
我一直想知道比较 optional 值的值的后果,这是我们保证初始化的值。
举个例子:
std::optional<int> test;
test = 2;
if (test > 1)
std::cout<<test.value();
我已经在本地运行并执行了这个案例,它打印出2。我的问题是,如何评估这个表达式?我从<optional> 标头的源代码中了解到operator() 被重载以返回bool,指示optional 对象是否已初始化。但这仍然不能解释我们是如何在if 块中输入代码的,因为我从未检查过test.value > 1 之类的东西。
这是我提到的重载operator()的链接:
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/optional#L937
【问题讨论】:
-
您链接的文件中的第 1064 行,而不是查看实现,我建议先查阅一些参考资料。