Im пытается реализовать вариационную оболочку шаблона loki typelist.Слияние двух вариационных шаблонов в одном
Слияние двух списков типов в стиле loki прост, но у меня возникают проблемы с слиянием в стиле вариатор-шаблон.
Это моя реализация (упрощенная, без push_back, index_of, ..., методов).
template<typename... Ts>
struct dl32TypeList;
template<typename HEAD , typename... TAIL>
struct dl32TypeList<HEAD,TAIL...>
{
static const unsigned int size = sizeof...(TAIL) + 1;
using value = dl32Loki_like_TypeList<HEAD, typename dl32TypeList<TAIL...>::value>;
};
template<>
struct dl32TypeList<>
{
using value = dl32NoType;
static const unsignedint size = 0;
};
Я хочу что-то вроде:
template<typename OTHER_TYPELIST>
using merge = dl32TypeList<HEAD , TAIL... , typename OTHER_TYPELIST::???>;
И это проблема: мы не можем хранить VARIADIC арг шаблона как с помощью/ЬурейеЕ, поэтому у меня есть какие-либо идеи о том, как я могу это сделать. (Обратите внимание на OTHER_TYPELIST :: ???).
Не могли бы вы предоставить полный пример? Что такое 'dl32Loki_like_TypeList', значит ли это' dl32TypeList'? Что такое 'dl32NoType'? –
Извините, вы верны, сообщение слишком короткое. dl32 является префиксом моих типов библиотек. dl32TypeList - это оболочка стиля-списка в стиле loki (как описано в «Современном C++-дизайне» Александреску, dl32_loki_style_typelist - это реализация этого списка). dl32NoType - это тип без значения, в основном знак для операций типа. В этом случае dl32NoType отмечает конец списка типов. – Manu343726
@ Manu343726 Мне действительно не нравится исследовать это, но реализуете ли вы модельлист из книги ** 2001 **, используя ** тип C++ 11 ** для родного типа? Это чисто упражнение? Перевод пакета параметров C++ 11 в конструкции C++ 98, а затем добавление интерфейса C++ 11 просто тупо запутанно. – Potatoswatter