[#BloombergLP-bsls-AtomicOperations_DefaultInt64-0a]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bsls.adoc[bsls]::AtomicOperations&lowbar;DefaultInt64
:relfileprefix: ../../
:mrdocs:

Default implementations of non&hyphen;essential 64&hyphen;bit integer atomic operations&period;

== Synopsis

Declared in `&lt;bsls&lowbar;atomicoperations&lowbar;default&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class IMP&gt;
struct AtomicOperations&lowbar;DefaultInt64;
----

== Description

This class provides default implementations of non&hyphen;essential atomic operations for the 64&hyphen;bit integer type independent on any specific platform&period; It also provides prototypes for the atomic operations for the 64&hyphen;bit integer type that have to be implemented separately for each specific platform&period; These platform&hyphen;independent and platform&hyphen;specific atomic operations together form a full set of atomic operations for the 64&hyphen;bit integer type&period;

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/AtomicTypes.adoc[`AtomicTypes`] 
| Atomic type traits for the platform&hyphen;specific implementation&period;
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/addInt64.adoc[`addInt64`] 
| Atomically add to the specified `atomicInt` the specified `value`, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/addInt64AcqRel.adoc[`addInt64AcqRel`] 
| Atomically add to the specified `atomicInt` the specified `value`, providing the acquire&sol;release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/addInt64NvAcqRel.adoc[`addInt64NvAcqRel`] 
| Atomically add to the specified `atomicInt` the specified `value` and return the resulting value, providing the acquire&sol;release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/addInt64NvRelaxed.adoc[`addInt64NvRelaxed`] 
| Atomically add to the specified `atomicInt` the specified `value` and return the resulting value, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/addInt64Relaxed.adoc[`addInt64Relaxed`] 
| Atomically add to the specified `atomicInt` the specified `value`, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/decrementInt64.adoc[`decrementInt64`] 
| Atomically decrement the specified `atomicInt` by 1, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/decrementInt64AcqRel.adoc[`decrementInt64AcqRel`] 
| Atomically decrement the specified `atomicInt` by 1, providing the acquire&sol;release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/decrementInt64Nv.adoc[`decrementInt64Nv`] 
| Atomically decrement the specified `atomicInt` by 1 and return the resulting value, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/decrementInt64NvAcqRel.adoc[`decrementInt64NvAcqRel`] 
| Atomically decrement the specified `atomicInt` by 1 and return the resulting value, providing the acquire&sol;release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/getInt64Acquire.adoc[`getInt64Acquire`] 
| Atomically retrieve the value of the specified `atomicInt`, providing the acquire memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/getInt64Relaxed.adoc[`getInt64Relaxed`] 
| Atomically retrieve the value of the specified `atomicInt`, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/incrementInt64.adoc[`incrementInt64`] 
| Atomically increment the value of the specified `atomicInt` by 1, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/incrementInt64AcqRel.adoc[`incrementInt64AcqRel`] 
| Atomically increment the value of the specified `atomicInt` by 1, providing the acquire&sol;release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/incrementInt64Nv.adoc[`incrementInt64Nv`] 
| Atomically increment the specified `atomicInt` by 1 and return the resulting value, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/incrementInt64NvAcqRel.adoc[`incrementInt64NvAcqRel`] 
| Atomically increment the specified `atomicInt` by 1 and return the resulting value, providing the acquire&sol;release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/initInt64.adoc[`initInt64`] 
| Initialize the specified `atomicInt` and set its value to the optionally specified `initialValue`&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/setInt64Relaxed.adoc[`setInt64Relaxed`] 
| Atomically set the value of the specified `atomicInt` to the specified `value`, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/setInt64Release.adoc[`setInt64Release`] 
| Atomically set the value of the specified `atomicInt` to the specified `value`, providing the release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/subtractInt64Nv.adoc[`subtractInt64Nv`] 
| Atomically subtract `value` from `atomicInt` and return the result&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/subtractInt64NvAcqRel.adoc[`subtractInt64NvAcqRel`] 
| Atomically subtract from the specified `atomicInt` the specified `value` and return the resulting value, providing the acquire&sol;release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/subtractInt64NvRelaxed.adoc[`subtractInt64NvRelaxed`] 
| Atomically subtract from the specified `atomicInt` the specified `value` and return the resulting value, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/swapInt64AcqRel.adoc[`swapInt64AcqRel`] 
| Atomically swap `atomicInt` with acquire&sol;release ordering&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a/testAndSwapInt64AcqRel.adoc[`testAndSwapInt64AcqRel`] 
| Conditionally swap `atomicInt` with acquire&sol;release ordering&period;
|===


== Derived Classes

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsls/AtomicOperations_Default32.adoc[`AtomicOperations&lowbar;Default32`] 
| Default atomic operations for a generic 32&hyphen;bit platform&period;
| xref:BloombergLP/bsls/AtomicOperations_Default64-0b.adoc[`AtomicOperations&lowbar;Default64`] 
| Default atomic operations for a generic 64&hyphen;bit platform&period;
|===


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