튜플 또는 가변 템플릿 매개변수에서 배열 이니셜라이저 생성
튜플 또는 가변 템플릿 매개변수에서 배열 이니셜라이저를 생성하려면 컴파일 시간 가변 템플릿을 사용하여 달성할 수 있는 시퀀스를 설정해야 합니다.
템플릿 선언
먼저 다음 템플릿을 정의합니다.
<code class="cpp">template<std::size_t offset, typename Key, typename... Entries> struct LayoutHelper { typedef std::tuple<> type; }; template<typename Key, typename... Entries> struct Layout:LayoutHelper<0, Key, Entries...> {}; template<typename Key, Key identifier, typename Data> struct Entry {};</code>
레이아웃 누적
오프셋을 누적하려면 재귀 도우미 함수를 사용하세요.
<code class="cpp">template<std::size_t offset, typename Key, Key id0, typename D0, typename... Entries> struct LayoutHelper<offset, Key, Entry<Key, id0, D0>, Entries...> { typedef typename prepend < ProcessedEntry< Key, id0, D0, offset > , typename LayoutHelper<offset+sizeof(D0), Key, Entries...>::type >::type type; };</code>
사용
하려면 이 기술을 사용하려면 다음 구문을 사용하여 레이아웃 사양을 제공하세요.
<code class="cpp">Layout< FooEnum, Entry< FooEnum, eFoo, char[10] >, Entry< FooEnum, eFoo2, double > > layout;</code>
레이아웃 튜플을 압축 해제한 후 결과 배열을 런타임 시 데이터에 액세스하는 데 사용할 수 있습니다.
위 내용은 Tuple 또는 Variadic 템플릿 매개변수에서 배열 이니셜라이저를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!