Предположим, у меня есть множество атомарных структур, каждая из которых имеет inner_type
:
struct Atomic1{
using inner_type = int;
};
struct Atomic2{
using inner_type = double;
};
struct Atomic3{
using inner_type = bool;
};
...
Мой клиентский класс - это шаблон с переменным числом аргументов, который может использовать 1 или более из вышеуказанных атомарных классов:
template<class ...AtomicTypeArgPack>
class MyclassAcceptingAtomicTypes;
У меня есть связанный родовой класс, который принимает Atomic*::inner_type
в качестве параметров шаблона:
template<class ...InnerTypeArgPack>
class MyclassAcceptingInnerTypes;
Мой определенный класс API определен, но указана пара типов шаблонов:
using my_first_class_t = MyclassAcceptingAtomicTypes<Atomic1, Atomic2>;
для каждого конкретного класса, у меня также есть другой класс внутренних типов:
using my_first_class_inner_types_t = MyclassAcceptingInnerTypes<Atomic1::inner_type , Atomic2::inner_type >;
Есть ли способ автоматически сгенерировать второй тип (т.е. my_first_class_inner_types_t
) из первого объявления (my_first_class_t
)использование шаблонов метапрограммирования / мета-функций?