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

Objects of a type with this trait can be &quot;moved&quot; from one memory location to another using `memmove` or `memcpy`&period;

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
struct TypeTraitBitwiseMoveable;
----

== Description

Although the result of such a bitwise copy is two copies of the same object, this trait only guarantees that one of the copies can be destroyed&period; The other copy must be considered invalid and its destructor must not be called&period; Most types, even those that contain pointers, are bitwise moveable&period; Undefined behavior may result if this trait is assigned to a types that contains pointers to its own internals, use virtual inheritance, or places pointers to itself within other data structures&period;

== Types

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslalg/TypeTraitBitwiseMoveable/Metafunction.adoc[`Metafunction`] 
| Metafunction that evaluates to `IsBitwiseMoveable&lt;TYPE&gt;&colon;&colon;type`&period;
| xref:BloombergLP/bslalg/TypeTraitBitwiseMoveable/NestedTraitDeclaration.adoc[`NestedTraitDeclaration`] 
| This class template ties the `bslalg&colon;&colon;TypeTraitBitwiseMoveable` trait tag to the `bslmf&colon;&colon;IsBitwiseMoveable` trait metafunction&period;
|===



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