[#BloombergLP-bslstl-Variant_VTableId-05]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::Variant&lowbar;VTableId
:relfileprefix: ../../
:mrdocs:

This component&hyphen;private struct computes an array in which element `i` is a pointer to `Variant&lowbar;FunctionId&lt;t&lowbar;RET, t&lowbar;VISITOR, t&lowbar;VARIANT, i&gt;&colon;&colon;functionImpl`&period;

== Synopsis

Declared in `&lt;bslstl&lowbar;variant&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class t&lowbar;RET,
    class t&lowbar;VISITOR,
    class t&lowbar;VARIANT,
    class t&lowbar;DUMMY&gt;
struct Variant&lowbar;VTableId;
----

== Description

The referenced function invokes a `t&lowbar;VISITOR` with a tag representing `i` and alternative `i` of `t&lowbar;VARIANT`, implicitly converting the return type to `t&lowbar;RET`&period; Implementation note&colon; The constexpr static maps of pointers defined by `Variant&lowbar;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&plus;&plus;&period;

== Specializations

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslstl/Variant_VTableId-01.adoc[`Variant&lowbar;VTableId&lt;t&lowbar;RET, t&lowbar;VISITOR, t&lowbar;VARIANT, bslmf::IntegerSequence&lt;std::size&lowbar;t, t&lowbar;INDICES&period;&period;&period;&gt;&gt;`] 
| This partial specialization provides the actual `s&lowbar;mapId` array once `t&lowbar;DUMMY` is deduced as an `IntegerSequence` of alternative indices&period;
|===



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