Мне было интересно, возможно ли создать список, содержащий параметры шаблона шаблона, например
template <
template <typename...> class TTP0,
template <typename...> class... TTPs
>
struct TTP_List : TTP_List<TTPs...> {};
Проблема, с которой я столкнулся, заключается в том, что я не знал хорошего способа доступа к элементам списка, чтоесть, TTP0
.Я хотел бы использовать псевдонимы типа typedef
или using
.Однако я знаю, что это невозможно, поскольку параметры шаблона шаблона не являются типами и поэтому не должны рассматриваться как таковые.
Подход, который я мог бы себе представить, заключается в создании явных структур для чтения данных и использования их специализаций, например:
template <template <typename...> class>
struct container_TTPs;
template <template <typename...> class TTP>
struct container_TTPs<std::vector> {};
Однако этот подход кажется очень явным.Есть ли способ добиться этого признания без использования специализации шаблонов?
Не стесняйтесь спрашивать, нужно ли мне уточнить.
РЕДАКТИРОВАТЬ: Например, я хочу иметь возможность использовать определенныевыражения для каждого удерживаемого типа, такие как TestClass<TTP_List<std::vector, std::list>>::value
, где TestClass
использует std :: vector и std :: list, не требуя шаблона с переменным числом в пределах TestClass
, так что можно передать несколько TTP_List
s.