Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencipta Pemula Tatasusunan daripada Parameter Templat Tuple atau Variadic?

Bagaimana untuk Mencipta Pemula Tatasusunan daripada Parameter Templat Tuple atau Variadic?

Patricia Arquette
Lepaskan: 2024-10-27 16:08:02
asal
932 orang telah melayarinya

How to Create Array Initializers from Tuple or Variadic Template Parameters?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan