[#BloombergLP-bslalg-NothrowMovableWrapper-02]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslalg.adoc[bslalg]::NothrowMovableWrapper
:relfileprefix: ../../
:mrdocs:

An object of this type wraps a value of the specified `TYPE`, and provides no other functionality other than returning the wrapped object&period; The move constructor is guaranteed not to throw, even if the move constructor for `TYPE` has no such guarantee&period; The user is thus asserting that the move constructor for the wrapped object _will not_ throw, even if it is allowed to&period; Constraints&colon; this class can be instantiated on object types only, i&period;e&period;, not references, arrays, or function types (though function pointers are OK)&period;

== Synopsis

Declared in `&lt;bslalg&lowbar;nothrowmovablewrapper&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class TYPE&gt;
class NothrowMovableWrapper;
----

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/ValueType.adoc[`ValueType`] 
| Alias for the wrapped `TYPE`&period;
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/allocator_type.adoc[`allocator&lowbar;type`] 
| Type of allocator to use&period; If `TYPE` is not allocator&hyphen;aware, then this is a private dummy type that will disable use of any constructor that takes an allocator&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/2constructor-0c.adoc[`NothrowMovableWrapper`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/2destructor.adoc[`&#126;NothrowMovableWrapper`] [.small]#[destructor]#
| Destroy this object, invoking `TYPE`s destructor&period;
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/get_allocator.adoc[`get&lowbar;allocator`] 
| Return the allocator used to construct this object&period; Note that this method will fail to instantiate unless `TYPE` is allocator&hyphen;aware&period;
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/unwrap-02.adoc[`unwrap`] 
| `unwrap` overloads
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/2conversion-02.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;NothrowMovableWrapper, IsBitwiseMoveable, bslmf&colon;&colon;IsBitwiseMoveable&lt;TYPE&gt;&colon;&colon;value&gt;`] 
| Declare `NothrowMovableWrapper` as bitwise moveable when `TYPE` is&period;
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/2conversion-0e.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;NothrowMovableWrapper, UsesAllocatorArgT, bslma&colon;&colon;UsesBslmaAllocator&lt;TYPE&gt;&colon;&colon;value&gt;`] 
| Declare that `NothrowMovableWrapper` uses the leading&hyphen;allocator convention when `TYPE` is allocator&hyphen;aware&period;
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/2conversion-06.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;NothrowMovableWrapper, UsesBslmaAllocator, bslma&colon;&colon;UsesBslmaAllocator&lt;TYPE&gt;&colon;&colon;value&gt;`] 
| Declare whether `NothrowMovableWrapper` uses a `bslma` allocator&period;
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/2conversion-07.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;NothrowMovableWrapper, is&lowbar;nothrow&lowbar;move&lowbar;constructible&gt;`] 
| Declare that `NothrowMovableWrapper` is nothrow move constructible&period;
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/2conversion-0f.adoc[`operator ValueType&`] 
| Return a reference offering modifiable access to the wrapped object&period;
| xref:BloombergLP/bslalg/NothrowMovableWrapper-02/2conversion-03.adoc[`operator ValueType const&`] 
| Return a reference offering const access to the wrapped object&period;
|===


== Specializations

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslalg/NothrowMovableWrapper-09.adoc[`NothrowMovableWrapper&lt;NothrowMovableWrapper&lt;TYPE&gt;&gt;`] 
| This specialization is for wrapped types&period; We do not support wrapping a wrapped type&period;
| xref:BloombergLP/bslalg/NothrowMovableWrapper-05.adoc[`NothrowMovableWrapper&lt;NothrowMovableWrapper&lt;TYPE&gt; const&gt;`] 
| This specialization is for wrapped types&period; We do not support wrapping a wrapped type&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
