[#BloombergLP-bslstl-Variant_CheckForP1957R2-0ed]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::xref:BloombergLP/bslstl/Variant_CheckForP1957R2-0e0.adoc[Variant&lowbar;CheckForP1957R2]&lt;t&lowbar;TYPE, xref:bsl/void_t.adoc[bsl::void&lowbar;t&lt;decltype(Variant&lowbar;ArrayHelper&lt;t&lowbar;TYPE&gt;&lcub;&lcub;&quot;bc&quot;&rcub;&rcub;)&gt;]&gt;
:relfileprefix: ../../
:mrdocs:

Detect a compiler that implements P1957R2 (and rejects narrowing)&period;

== Synopsis

Declared in `&lt;bslstl&lowbar;variant&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class t&lowbar;TYPE&gt;
struct xref:BloombergLP/bslstl/Variant_CheckForP1957R2-0e0.adoc[Variant&lowbar;CheckForP1957R2]&lt;t&lowbar;TYPE, xref:bsl/void_t.adoc[bsl::void&lowbar;t&lt;decltype(Variant&lowbar;ArrayHelper&lt;t&lowbar;TYPE&gt;&lcub;&lcub;&quot;bc&quot;&rcub;&rcub;)&gt;]&gt;
    : xref:bsl/false_type.adoc[bsl::false&lowbar;type]
----

== Description

This partial specialization derives from `bsl&colon;&colon;false&lowbar;type`, and is selected only when `Variant&lowbar;ArrayHelper&lt;t&lowbar;TYPE&gt;&lcub;&lcub;&quot;bc&quot;&rcub;&rcub;` is a valid expression, indicating that the compiler has implemented P1957R2 (and therefore rejects narrowing pointer&hyphen;to&hyphen;`bool` conversions in aggregate initialization)&period;

== Base Classes

[cols="1,4"]
|===
| Name| Description
| `xref:bsl/false_type.adoc[bsl::false&lowbar;type]`
| Metafunction representing the boolean constant `false`&period;
|===


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