loki 유형 목록의 가변 템플릿 래퍼를 구현하려고 시도합니다.두 개의 가변 템플릿을 하나로 병합
로키 스타일의 두 유형리스트를 병합하는 것은 쉽지만 variadic- 템플리트 스타일에서 병합하는 데 문제점이 있습니다.
내 구현입니다 (단순화, 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::???>;
을 그리고 이것은 문제이다 : 우리는 사용/타입 정의로 가변 인자 템플릿 인수를 저장할 수 없습니다, 그래서 내가이 작업을 수행 할 수있는 방법에 대해 어떤 생각을 가지고있다. (OTHER_TYPELIST :: ???에 유의하십시오.)
전체 사례를 제공해 주시겠습니까? 'dl32Loki_like_TypeList'는'dl32TypeList'를 의미합니까? 'dl32NoType'은 무엇입니까? –
죄송합니다, 정확합니다, 메시지가 너무 짧습니다. dl32는 내 라이브러리 유형의 접두어입니다. dl32TypeList는 loki 형식의 유형 목록의 래퍼입니다 (Alexandrescu의 "Modern C++ desing"에서 설명한 것처럼 dl32_loki_style_typelist는 해당 유형 목록을 구현 한 것입니다). dl32NoType은 의미가없는 유형이며, 기본적으로 유형 조작에 대한 표시입니다. 이 경우 dl32NoType은 입력 목록의 끝을 표시합니다. – Manu343726
@ Manu343726 정말 연구하고 싶지는 않지만 ** C++ 11 **의 네이티브 타입 목록 기능을 사용하여 ** 2001 ** 도서에서 유형 목록을 구현하고 있습니까? 이것은 순전히 운동입니까? C++ 11 파라미터 팩을 C++ 98 구문으로 변환 한 다음 C++ 11 인터페이스를 추가하는 것은 어리석게 복잡합니다. – Potatoswatter