[#bsl-optional-072-2constructor-097] = xref:bsl.adoc[bsl]::xref:bsl/optional-072.adoc[optional]::optional :relfileprefix: ../../ :mrdocs: If the `optional` base class of the specified `original` holds a value, create an `optional` object whose contained value is initialized by moving from that value; otherwise, create a disengaged `optional` object. Use the specified `allocator` to supply memory. `original` is left in a valid, but unspecified state. Note that this constructor does not participate in overload resolution unless `optional` is an accessible base class of `t_DERIVED` or `t_DERIVED` is `optional` itself (in which case the instantiation provides the allocator‐extended move constructor). == Synopsis Declared in `<bslstl_optional.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_DERIVED> optional( std::allocator_arg_t, xref:bsl/optional-072.adoc[AllocType] allocator, xref:BloombergLP/bslmf/MovableRef_Deduced.adoc[BloombergLP::bslmf::MovableRef_Deduced<t_DERIVED>] original); ---- [.small]#Created with https://www.mrdocs.com[MrDocs]#