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>

template<unsigned int t_N>
struct Tag;

Data Members

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.

Non-Member Functions

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).

Derived Classes

Name

Description

InvokeResult_VoidChecker

Empty type used to detect void expressions. The size of this type is the same as bslmf::Tag<1>.

Created with MrDocs