[#BloombergLP-bslstl-Optional_DataImp] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::Optional_DataImp :relfileprefix: ../../ :mrdocs: This component‐private `struct` manages a `value_type` object in an `Optional_Base` object. This class provides an abstraction for `const` value type. An `Optional_Base` object may contain an object of `const` type. An assignment to such an `Optional_Base` object should not succeed. However, unless the `Optional_Base` object itself is `const`, it should be possible to change the value of the `Optional_Base` object using `emplace`. In order to allow for that, this class manages a non‐const object of `value_type`, but all the accessors return a `const` adjusted reference to the managed object. == Synopsis Declared in `<bslstl_optional.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_TYPE> struct Optional_DataImp; ---- == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/Optional_DataImp/2constructor-02.adoc[`Optional_DataImp`] [.small]#[constructor]# | Constructors | xref:BloombergLP/bslstl/Optional_DataImp/emplace-09.adoc[`emplace`] | `emplace` overloads | xref:BloombergLP/bslstl/Optional_DataImp/hasValue.adoc[`hasValue`] | Return `true` if this objects has a value, and `false` otherwise. | xref:BloombergLP/bslstl/Optional_DataImp/reset.adoc[`reset`] | Destroy the `value_type` object in `d_buffer`, if any. | xref:BloombergLP/bslstl/Optional_DataImp/value-0c.adoc[`value`] | `value` overloads |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/Optional_Data-09.adoc[`Optional_Data<t_TYPE, true>`] | This partial specialization manages a trivially destructible `value_type` in Optional_Base. It does not have a user‐provided destructor, which makes it `is_trivially_destructible` itself. | xref:BloombergLP/bslstl/Optional_Data-0c.adoc[`Optional_Data`] | This component‐private `struct` manages a `value_type` object in `Optional_Base` by inheriting from `Optional_DataImp`. In addition, this primary template properly destroys the owned instance of `t_TYPE` in its destructor. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#