c++ - std::optional has_value() 怎么可能是 constexpr?

标签 c++ c++17

这个问题在这里已经有了答案:





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/

相关文章:

c++ - 所有元素都指向同一个对象

c++ - 将许多 C 调用函数封装到单个实现中

c++ - "The World' s Dumbest Smart Pointer 有什么意义?”

c++ - 初始化 std::byte 容器的正确方法

c++ - 可以使用 std::launder 将对象指针转换为其封闭数组指针吗?

c++ - 在 Eigen 中求解稀疏上三角系统?

c++ - Xbox 360 上的 OpenSteer?

c++ - 是否有可能 static_assert lambda 不是通用的?

c++ - 钻石物体的定义

c++ - optional<T> 进入 C++ 标准的含义