[#BloombergLP-bslalg-NothrowMovableUtil_Traits-03]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslalg.adoc[bslalg]::xref:BloombergLP/bslalg/NothrowMovableUtil_Traits-04.adoc[NothrowMovableUtil&lowbar;Traits]&lt;TYPE, true&gt;
:relfileprefix: ../../
:mrdocs:

Component&hyphen;private traits for unwrapped function types&period;

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class TYPE&gt;
struct xref:BloombergLP/bslalg/NothrowMovableUtil_Traits-04.adoc[NothrowMovableUtil&lowbar;Traits]&lt;TYPE, true&gt;;
----

== Description

Do not use&period; This specialization is for function types that are not wrapped&period; This specialization is NOT for function pointers or function references&period;

`UnwrappedType` is an object type, and is thus the decayed version of `TYPE`, i&period;e&period;, a function pointer&period; Since `unwrap` always returns a reference, this decay means that, `unwrap(f)` will not compile if `f` is a function or reference to function&period; However `UnwrappedType pf &equals; f&semi;` will work whether `f` is a function or not&period;

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslalg/NothrowMovableUtil_Traits-03/IsWrapped.adoc[`IsWrapped`] 
| Alias for `bsl&colon;&colon;false&lowbar;type` (type is not wrapped)&period;
| xref:BloombergLP/bslalg/NothrowMovableUtil_Traits-03/UnwrappedType.adoc[`UnwrappedType`] 
| Alias for the unwrapped type of `TYPE`&period;
| xref:BloombergLP/bslalg/NothrowMovableUtil_Traits-03/WrappedType.adoc[`WrappedType`] 
| Alias for the wrapped type of `TYPE`&period;
|===



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