【发布时间】:2018-08-19 19:09:40
【问题描述】:
我对@987654324@ 摸不着头脑,根据the docs,它不应该有constexpr 赋值运算符。
但是,当我在 gcc-8.1 中尝试这个 sn-p 时,它编译并工作得很好:
constexpr std::optional<int> foo() {
std::optional<int> bar = 3;
bar = 1337;
return bar;
}
constexpr auto z = foo();
我有什么遗漏吗?
【问题讨论】:
-
constexpr auto z = foo()也编译吗? -
@Evgeny 是的,确实如此,它在更复杂的环境中工作......
-
@Evgeny 是的,直播:godbolt.org/z/Y11f6k
-
见P0602。它还没有应用于标准,但是当它被应用时,它会赋值
constexpr。 (并且预计将追溯适用于 C++17。) -
@cpplearner 啊,这解释了很多!请把它作为答案发布,我会接受它,因为这是正确的。
标签: c++ c++17 optional constexpr libstdc++