Implementation of std::variant_alternative.
This implementation also accepts other typelist-parameterized classes, such as std::variant.