[#BloombergLP-bslmf-IsBitwiseEqualityComparable-018]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::IsBitwiseEqualityComparable
:relfileprefix: ../../
:mrdocs:

This `struct` template implements a meta&hyphen;function to determine whether the (template parameter) `t&lowbar;TYPE` is bitwise EqualityComparable&period;

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class t&lowbar;TYPE&gt;
struct IsBitwiseEqualityComparable
    : &sol;&ast; implementation-defined &ast;&sol;::type
----

== Description

If `IsBitwiseEqualityComparable&lt;t&lowbar;TYPE&gt;` is derived from `true&lowbar;type` then `t&lowbar;TYPE` is bitwise EqualityComparable&period; Otherwise, bitwise equality comparability cannot be inferred for `t&lowbar;TYPE`&period; This trait can be associated with a bitwise EqualityComparable user&hyphen;defined class by specializing this class or by using the `BSLMF&lowbar;NESTED&lowbar;TRAIT&lowbar;DECLARATION` macro&period;

== Base Classes

[cols="1,4"]
|===
| Name| Description
| `&sol;&ast; implementation-defined &ast;&sol;::type`
| 
|===

== Specializations

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-019.adoc[`IsBitwiseEqualityComparable&lt;double&gt;`] 
| This explicit specialization reports that `double` is treated as bitwise EqualityComparable&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0e3.adoc[`IsBitwiseEqualityComparable&lt;float&gt;`] 
| This explicit specialization reports that `float` is treated as bitwise EqualityComparable&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0da.adoc[`IsBitwiseEqualityComparable&lt;long double&gt;`] 
| This explicit specialization reports that `long double` is treated as bitwise EqualityComparable&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-05.adoc[`IsBitwiseEqualityComparable&lt;void&gt;`] 
| This explicit specialization reports that `void` is never bitwise EqualityComparable&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0fd.adoc[`IsBitwiseEqualityComparable&lt;bsl::polymorphic&lowbar;allocator&lt;TYPE&gt;&gt;`] 
| Specialize `IsBitwiseEqualityComparable` as `true&lowbar;type` for `polymorphic&lowbar;allocator`&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0e5.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE volatile&gt;`] 
| This partial specialization ensures that volatile&hyphen;qualified types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0a9.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE const&gt;`] 
| This partial specialization ensures that const&hyphen;qualified types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-03.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE const volatile&gt;`] 
| This partial specialization ensures that const&hyphen;volatile&hyphen;qualified types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0a2.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE[]&gt;`] 
| This partial specialization ensures that array&hyphen;of&hyphen;unknown&hyphen;bound types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0e7.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE volatile[]&gt;`] 
| This partial specialization ensures that volatile&hyphen;qualified array&hyphen;of&hyphen;unknown&hyphen;bound types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0d6.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE const[]&gt;`] 
| This partial specialization ensures that const&hyphen;qualified array&hyphen;of&hyphen;unknown&hyphen;bound types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-08.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE const volatile[]&gt;`] 
| This partial specialization ensures that const&hyphen;volatile&hyphen;qualified array&hyphen;of&hyphen;unknown&hyphen;bound types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-009.adoc[`IsBitwiseEqualityComparable&lt;bsl::pair&lt;T1, T2&gt;&gt;`] 
| Trait indicating `pair` is bitwise equality&hyphen;comparable when both elements are and the pair has no padding&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0b.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE[]&gt;`] 
| This partial specialization ensures that array types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-0f4.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE volatile[]&gt;`] 
| This partial specialization ensures that volatile&hyphen;qualified array types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-003.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE const[]&gt;`] 
| This partial specialization ensures that const&hyphen;qualified array types have the same result as their element type&period;
| xref:BloombergLP/bslmf/IsBitwiseEqualityComparable-04.adoc[`IsBitwiseEqualityComparable&lt;t&lowbar;TYPE const volatile[]&gt;`] 
| This partial specialization ensures that const&hyphen;volatile&hyphen;qualified array types have the same result as their element type&period;
|===



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