Сохранение типов во время компиляции

Я пытаюсь реализовать обертку над чем-то подобным:

template <typename ...Type>
struct Types
{
    template <typename NewType>
    constexpr auto addType()
    {
        return Types<Type..., NewType>();
    }

    template<size_t n>
    constexpr auto getType()
    {
        return std::get<n+1>(types);
    }

    static constexpr std::variant<std::monostate, Type...> types {};
};

То есть моя цель, чтоб в зависимости от вызовов функции addType(), я в итоге как-то получил доступ к std::variant (std::tuple тоже устроит), для которого я смогу вызвать getType(). По идее же все типы, которые я добавляю, известны во время компиляции? Есть вариант как-то реализовать нечто подобное?

Вариант хранить список std::type_info мне не подходит.


Ответы (0 шт):