[#BloombergLP-bslstl-Variant_VTableId-05] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::Variant_VTableId :relfileprefix: ../../ :mrdocs: This component‐private struct computes an array in which element `i` is a pointer to `Variant_FunctionId<t_RET, t_VISITOR, t_VARIANT, i>::functionImpl`, defined above as a function that invokes a `t_VISITOR` with a tag representing `i` and alternative `i` of `t_VARIANT`, implicitly converting the return type to `t_RET`. Implementation note: The constexpr static maps of pointers defined by `Variant_VTable` and this class have deliberately been defined in two different classes as having them in the same class caused issues with Clang and Microsoft Visual C++. == Synopsis Declared in `<bslstl_variant.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class t_RET, class t_VISITOR, class t_VARIANT, class t_DUMMY> struct Variant_VTableId; ---- == Specializations [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/Variant_VTableId-01.adoc[`Variant_VTableId<t_RET, t_VISITOR, t_VARIANT, bslmf::IntegerSequence<std::size_t, t_INDICES...>>`] | In order to allow for perfect forwarding, both t_VISITOR and t_VARIANT must be of reference type. If they are not, something went wrong. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#