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.
Declared in <bslmf_tag.h>
template<unsigned int t_N>
struct Tag;
| Name | Description |
|---|---|
d_lowerSizeArray | Lower 16 bits of the compile-time size encoded by this tag. |
d_upperSizeArray | Upper 16 bits of the compile-time size encoded by this tag. |
| Name | Description |
|---|---|
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). |
| Name | Description |
|---|---|
InvokeResult_VoidChecker | Empty type used to detect void expressions. The size of this type is the same as bslmf::Tag<1>. |