jeudi 3 décembre 2015

trivially default constructible std::optional

Is it permitable to design std::optional (currently std::experimental::optional) in such a way, that for trivially default constructible type T corresponding std::optional< T > is also trivially default constructible?

The same question regading std::variant and its integral discriminator.

My own answer is: "No, it cannot be designed in such a way, because value of its (bool?) discriminator obtained during default initialization will be indeterminate if the object has automatic storage duration or if it reinterpret_cast-ed from non-zero-initialized suitable storage." Requirement to the user to do value-initialization every time is not allowed on my mind.

Aucun commentaire:

Enregistrer un commentaire