是否允许以这种方式设计std::optional
(当前std::experimental::optional
),对于简单的默认可构造类型,T
相应std::optional< T >
的也是简单的默认可构造的?
同样的问题退出std::variant
及其整体鉴别器.
我自己的答案是:"不,它不能以这种方式设计,因为如果对象具有自动存储持续时间或者reinterpret_cast
来自非零初始化存储的-ed,则在默认初始化期间获得的积分鉴别器的值将是不确定的. " 我不介意每次要求用户进行值初始化.
你的答案是对的:你做不到.规范要求false
在默认构造时将其"初始化标志"设置为.