std :: optional has_value()如何成为constexpr?

时间:2018-10-19 15:57:39

标签: c++ c++17

由于std::optional可以在运行时更改其状态(即,对象已附加到其上),has_value()方法和bool operator如何成为{{1} },因此在编译时进行了评估?

1 个答案:

答案 0 :(得分:0)

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