平凡的默认可构造std :: optional和std :: variant

Ori*_*ent 5 c++ variant optional c++11 c++14

是否允许以这种方式设计std::optional(当前std::experimental::optional),对于简单的默认可构造类型,T相应std::optional< T >的也是简单的默认可构造的?

同样的问题退出std::variant及其整体鉴别器.

我自己的答案是:"不,它不能以这种方式设计,因为如果对象具有自动存储持续时间或者reinterpret_cast来自非零初始化存储的-ed,则在默认初始化期间获得的积分鉴别器的值将是不确定的. " 我不介意每次要求用户进行值初始化.

And*_*zej 8

你的答案是对的:你做不到.规范要求false在默认构造时将其"初始化标志"设置为.