Handle `Variant::Get` for types not supported by the `Variant`
Previously, if you called Get
on a Variant
with a type that is not
in the list of types supported by the Variant
, that would attempt to
look up the type at index -1
and could spin the compiler into an
endless loop.
Instead, check for the case where you are attempting to get a type from
the Variant
not listed in its templat arguments. In this case, instead
of producing a compiler error, produce a runtime error. Although this
increases the possibility that a bad compile path is being generated, it
simplifies creating templated code that produces cases we don't care
about.