我没有安装最新的编译器来暗示最终的std::optional
语义将是什么。但在 C++14 中,以下内容:
#include <experimental/optional>
#include <algorithm>
int main()
{
using oint = std::experimental::optional<int>;
int x = std::max(1, 2);
auto oy = oint{3};
auto z = std::max(x, oy);
}
不编译。现在,在未来,我希望/希望z
会3
在这种情况下得到解决;如果oy = oint{}
那时 z
可以得到2
。
是像我期望的那样在 C++17 中标准化,还是稍后提出标准化?或者,不可定义性是否标准化(就像它在 C++14 中一样)?
注意:这里的动机可能是我自己为 C++17 之前的代码实现一些东西;如果计划将相关的东西标准化,我会尝试与之匹配。