这个问题在这里已经有了答案:
How can this code be constexpr? (std::chrono)
(2 个回答)
3年前关闭。
如std::optional
可以在运行时更改其状态(即附加一个对象),has_value()
怎么可能?方法和 bool operator
成为 constexpr
,因此在编译时进行评估?
最佳答案
constexpr 并不意味着它总是在编译时进行评估;这意味着如果您给出一个常量值(在编译时已知),那么结果也将是 const 。
构造函数是 constexpr
template < class U = value_type >
constexpr optional( U&& value );
因此您可以填写一个可选项,以便编译器在编译时已经知道该值已设置。
std::optional<int> opt(3); // <- optional is valid
看
https://en.cppreference.com/w/cpp/utility/optional/optional
关于c++ - std::optional has_value() 怎么可能是 constexpr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52896012/