Mencipta Pemula Tatasusunan daripada Parameter Templat Tuple atau Variadic
Untuk mencipta pemula tatasusunan daripada parameter templat tuple atau variadic, masa kompilasi jujukan perlu diwujudkan, yang boleh dicapai melalui penggunaan templat variadik.
Pengisytiharan Templat
Pertama, tentukan templat berikut:
<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>
Pengumpulan Reka Letak
Untuk mengumpul offset, gunakan fungsi pembantu rekursif:
<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>
Penggunaan
Untuk gunakan teknik ini, sediakan spesifikasi reka letak menggunakan sintaks berikut:
<code class="cpp">Layout< FooEnum, Entry< FooEnum, eFoo, char[10] >, Entry< FooEnum, eFoo2, double > > layout;</code>
Selepas membongkar tuple reka letak, tatasusunan yang terhasil boleh digunakan untuk mengakses data pada masa jalan.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Pemula Tatasusunan daripada Parameter Templat Tuple atau Variadic?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!