[#BloombergLP-bslmf-IsBitwiseMoveable_Imp-03]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::IsBitwiseMoveable&lowbar;Imp&lt;xref:bsl/allocator-0df.adoc[allocator&lt;unsigned long&gt;]&gt;
:relfileprefix: ../../
:mrdocs:

Core implementation of the `IsBitwiseMoveable` trait&period; A class is detected as being bitwise moveable iff it is trivially copyable or it has a nested trait declaration for the `IsBitwiseMoveable` trait&period; In C&plus;&plus;03 however, detection of trivially copyable classes is imperfect and depends on programmer intervention&period; As many empty classes (including standard classes like `std&colon;&colon;less&lt;T&gt;` would not be detected as being trivially copyable and, therefore, bitwise moveable, a heuristic is put in place whereby any type of one byte size is assumed to be bitwise moveable&period; See component&hyphen;level documentation for this component for more details on this heuristic and how to avoid false positives&period;

== Synopsis

Declared in `&lt;bslmf&lowbar;isbitwisemoveable&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;&gt;
struct IsBitwiseMoveable&lowbar;Imp&lt;xref:bsl/allocator-0df.adoc[allocator&lt;unsigned long&gt;]&gt;;
----

== Type Aliases

[cols="1"]
|===
| Name
| xref:BloombergLP/bslmf/IsBitwiseMoveable_Imp-03/type.adoc[`type`] 
|===


== Static Data Members

[cols="1"]
|===
| Name
| xref:BloombergLP/bslmf/IsBitwiseMoveable_Imp-03/k_ValueWithoutOnebyteHeuristic.adoc[`k&lowbar;ValueWithoutOnebyteHeuristic`] 
| xref:BloombergLP/bslmf/IsBitwiseMoveable_Imp-03/value.adoc[`value`] 
|===



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