[#BloombergLP-bsltf-CopyMoveTracker]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bsltf.adoc[bsltf]::CopyMoveTracker
:relfileprefix: ../../
:mrdocs:

Type that tracks whether it has been copied into, moved into, or moved from&period;

== Synopsis

Declared in `&lt;bsltf&lowbar;copymovetracker&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class CopyMoveTracker;
----

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsltf/CopyMoveTracker/2constructor-03.adoc[`CopyMoveTracker`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bsltf/CopyMoveTracker/operator_assign-03.adoc[`operator&equals;`] 
| Assignment operators
| xref:BloombergLP/bsltf/CopyMoveTracker/copyMoveState.adoc[`copyMoveState`] 
| Return this object&apos;s state&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/hasUnknownCopyMoveState.adoc[`hasUnknownCopyMoveState`] 
| Return `true` if this object&apos;s state includes the `e&lowbar;UNKNOWN` bit&period; This attribute can be `true` only if `setCopyMoveState` was called with an enumerator value that includes the `e&lowbar;UNKNOWN` bit&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/isCopiedConstInto.adoc[`isCopiedConstInto`] 
| Return `true` if this object&apos;s state includes the `e&lowbar;COPIED&lowbar;CONST&lowbar;INTO` bits but not `e&lowbar;UNKNOWN`&period; This attribute is `true` if this object was copy constructed or copy assigned from a `const` lvalue (or, in C&plus;&plus;03, from a prvalue)&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/isCopiedInto.adoc[`isCopiedInto`] 
| Return `true` if this object&apos;s state includes the `e&lowbar;COPIED&lowbar;INTO` bit but not `e&lowbar;UNKNOWN`&period; This attribute is `true` if either `isCopiedConstInto()` or `isCopiedNonconstInto()` is true&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/isCopiedNonconstInto.adoc[`isCopiedNonconstInto`] 
| Return `true` if this object&apos;s state includes the `e&lowbar;COPIED&lowbar;NONCONST&lowbar;INTO` bits but not `e&lowbar;UNKNOWN`&period; This attribute is `true` if this object was copy constructed or copy assigned from a non&hyphen;`const` lvalue&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/isMovedFrom.adoc[`isMovedFrom`] 
| Return `true` if this object&apos;s state includes the `e&lowbar;MOVED&lowbar;FROM` bit but not `e&lowbar;UNKNOWN`&period; This attribute is `true` if this object was the argument of the move constructor or the rhs of the move assignment operator and was not subsequently modified&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/isMovedInto.adoc[`isMovedInto`] 
| Return `true` if this object&apos;s state includes the `e&lowbar;MOVED&lowbar;INTO` bit but not `e&lowbar;UNKNOWN`&period; This attribute is `true` if this object was move constructed or was the lhs the of move assignment operator&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/isOriginal.adoc[`isOriginal`] 
| Return `true` if this object is not in a copied&hyphen;into, moved&hyphen;into, or unknown state&period; This attribute is `true` if this object was default constructed or reset and not subsequently assigned to&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/resetCopyMoveState.adoc[`resetCopyMoveState`] 
| Set this object to the `e&lowbar;NOT&lowbar;COPIED&lowbar;OR&lowbar;MOVE` state&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/setCopyMoveState.adoc[`setCopyMoveState`] 
| Set this object to the specified `state`, which might be the bitwise OR of `e&lowbar;MOVED&lowbar;FROM` and one of the other enumerator values&period; The behavior is undefined unless `CopyMoveState&colon;&colon;isValid(state)` is `true`&period;
| xref:BloombergLP/bsltf/CopyMoveTracker/swapCopyMoveStates.adoc[`swapCopyMoveStates`] 
| Set the state of both the specified `this` and `b` objects to the bitwise OR of `e&lowbar;MOVED&lowbar;INTO` and `e&lowbar;MOVED&lowbar;FROM`&period;
|===


== Friends

[cols="1,4"]
|===
| Name| Description
| `xref:BloombergLP/bsltf/setCopyMoveState-0e.adoc[BloombergLP::bsltf::setCopyMoveState]`
| Set the object at the specified `tracker` address to the specified `state`&period; This function is an ADL customization point used by `CopyMoveState&colon;&colon;set(obj, state)`&period; The behavior is undefined unless `CopyMoveState&colon;&colon;isValid(state)` is `true`&period;
| `xref:BloombergLP/bsltf/copyMoveState-00.adoc[BloombergLP::bsltf::copyMoveState]`
| Return the state of the specified `tracker`&period; This function is an ADL customization point used by `CopyMoveState&colon;&colon;get(obj)`&period;
| `xref:BloombergLP/bsltf/operator_not_eq-0f0.adoc[BloombergLP::bsltf::operator!&equals;]`
| Return `false`&semi; the copy&sol;move state is _not_ a salient attribute, so all `CopyMoveTracker` objects compare equal&period; Note that this operator is called implicitly if a client class defines a defaulted comparison operator (C&plus;&plus;20), but will not be selected by overload resolution for a derived class having no comparison operator&period;
| `xref:BloombergLP/bsltf/operator_eq-0844.adoc[BloombergLP::bsltf::operator&equals;&equals;]`
| Return `true`&semi; the copy&sol;move state is _not_ a salient attribute, so all `CopyMoveTracker` objects compare equal&period; Note that this operator is called implicitly if a client class defines a defaulted comparison operator (C&plus;&plus;20), but will not be selected by overload resolution for a derived class having no comparison operator&period;
|===


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