[#BloombergLP-bslmf-Tag-0b] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::Tag :relfileprefix: ../../ :mrdocs: This template class is never intended to produce a run‐time instance. The only useful attribute of a tag is its size (which is, of course, computable at compile time, even if an instance is never created). Note that in case of overflow on Linux 64‐bit machines, we split the size into 2 data members. == Synopsis Declared in `<bslmf_tag.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<unsigned int t_N> struct Tag; ---- == Data Members [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmf/Tag-0b/d_lowerSizeArray.adoc[`d_lowerSizeArray`] | Lower 16 bits of the compile‐time size encoded by this tag. | xref:BloombergLP/bslmf/Tag-0b/d_upperSizeArray.adoc[`d_upperSizeArray`] | Upper 16 bits of the compile‐time size encoded by this tag. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmf/operator_comma.adoc[`operator,`] | Return `InvokeResult_VoidChecker()` if the left argument is of type cv‐`void`; otherwise `bslmf::Tag<false>()`. 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. For any non‐void expression `expr`, `(expr,InvokeResult_VoidChecker())`, will match this overload and produce a result of type `bslmf::Tag<false>`. However, `const t_TYPE&` will not match `void`, so if `expr` is a void expression, the built‐in comma operator is matched and the result will have type `InvokeResult_VoidChecker` (i.e., the second argument). |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmf/InvokeResult_VoidChecker.adoc[`InvokeResult_VoidChecker`] | Empty type used to detect void expressions. The size of this type is the same as `bslmf::Tag<1>`. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#