Home | Libraries | People | FAQ | More |
optional<T>
is
currently implemented using a custom aligned storage facility built from alignment_of
and type_with_alignment
(both from Type Traits). It uses a separate boolean flag to indicate the initialization
state. Placement new with T
's
copy/move constructor and T
's
destructor are explicitly used to initialize, copy, move and destroy optional
values. As a result, T
's default
constructor is effectively by-passed, but the exception guarantees are basic.
It is planned to replace the current implementation with another with stronger
exception safety, such as a future boost::variant
.