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

This class provides a test type for predicates returning a type that is convertible&hyphen;to&hyphen;bool&period; It makes life reasonably difficult by disabling the address&hyphen;of and comma operators, but deliberately does not overload the `&amp;&amp;` and `&verbar;&verbar;` operators, as we hope the standard will be updated to no longer require such support&period; Once C&plus;&plus;11 becomes available, this class would use an `explicit operator bool()` conversion operator, and explicitly supply the `&equals;&equals;` and `!&equals;` operators, but we use the convertible&hyphen;to&hyphen;pointer&hyphen;to&hyphen;member idiom in the meantime&period; Implicitly defined operations fill out the API as needed&period;

== Synopsis

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

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

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsltf/EvilBooleanType/2constructor-02.adoc[`EvilBooleanType`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bsltf/EvilBooleanType/2destructor.adoc[`&#126;EvilBooleanType`] [.small]#[destructor]#
| Destroy this object&period;
| xref:BloombergLP/bsltf/EvilBooleanType/2conversion.adoc[`operator BoolResult`] 
| Return the value of this object&period;
| xref:BloombergLP/bsltf/EvilBooleanType/operator_not.adoc[`operator!`] 
| Return the newly created object having the logically negated value of this object&period;
|===


== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsltf/operator_not_eq-018.adoc[`operator!&equals;`]
| Return an `EvilBoolanType` value that converts to `true` if the specified `lhs` and `rhs` do not have the same value, and a value that converts to `false` otherwise&period; Two `EvilBooleanType` objects do not have the same value if the values resulting from converting each to `bool` do not have the same value&period;
| xref:BloombergLP/bsltf/operator_eq-0afd.adoc[`operator&equals;&equals;`]
| Return an `EvilBoolanType` value that converts to `true` if the specified `lhs` and `rhs` have the same value, and a value that converts to `false` otherwise&period; Two `EvilBooleanType` objects have the same value if the values resulting from converting each to `bool` have the same value&period;
|===


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