c++ - constexpr std::可选重置
问题描述
我正在查看 C++-17std::optional
类模板的接口,并注意到reset
and assignment
fromnullopt
没有标记为 constexpr。
这是疏忽还是有原因不能将此操作标记为 constexpr?
解决方案
有一个原因,那就是[expr.const]以前禁止:
赋值表达式或赋值运算符 ([class.copy]) 的调用将更改联合的活动成员;
由于P1330: 在 constexpr 中更改联合的活动成员,该限制不再存在,这使得所有这些事情更容易实现(该论文实际上只是删除了我上面引用的要点)。
的optional
复制和移动分配(但没有其他分配)的constexpr
原因是因为它们可以默认为普通类型。
推荐阅读
- java - 如何在另一种方法中使用一种方法中的数组而不使其在Java中成为全局
- openshift - RHEL openshift enterprise 3.1 从主机收集信息时出现安装错误
- r - 在R中创建生态数据时间序列时如何处理复杂的时间线
- java - 蚀。“错误:无法找到或加载主类”
- algorithm - 为什么不是归并排序 O(N^2)?请看这个例子
- html - Bootstrap 4 - 选择输入未正确对齐的表单行
- android - 只有一张表创建了 sql Lite Android
- python - 在卷积神经网络中设置层的维度
- google-cloud-platform - 可以创建 3 个表然后查询所有 3 个表吗?
- corda - 编写 oracle 服务与在 corda 中使用 oraclize 有什么区别?