[#BloombergLP-bslmf-operator_comma]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::operator,
:relfileprefix: ../../
:mrdocs:

Return `InvokeResult&lowbar;VoidChecker()` if the left argument is of type cv&hyphen;`void`&semi; otherwise `bslmf&colon;&colon;Tag&lt;false&gt;()`&period; This overload of the comma operator is declared but not defined, and is intended to be used in metafunctions in an unevaluated context to detect void expressions&period; For any non&hyphen;void expression `expr`, `(expr,InvokeResult&lowbar;VoidChecker())`, will match this overload and produce a result of type `bslmf&colon;&colon;Tag&lt;false&gt;`&period; However, `const t&lowbar;TYPE&amp;` will not match `void`, so if `expr` is a void expression, the built&hyphen;in comma operator is matched and the result will have type `InvokeResult&lowbar;VoidChecker` (i&period;e&period;, the second argument)&period;

== Synopsis

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

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class t&lowbar;TYPE&gt;
xref:BloombergLP/bslmf/Tag-0b.adoc[Tag&lt;false&gt;]
operator,(
    t&lowbar;TYPE const&,
    xref:BloombergLP/bslmf/InvokeResult_VoidChecker.adoc[InvokeResult&lowbar;VoidChecker])
requires !bsl&colon;&colon;is&lowbar;void&lt;t&lowbar;TYPE&gt;&colon;&colon;value;
----

== Description

Note that Sun CC incorrectly matches this overload for a void expression, then fails hard&period; The `enable&lowbar;if` prevents this match for Sun CC and any other compilers that may similarly match `void` and is harmless for compilers that don&apos;t&period;


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