Maison >développement back-end >C++ >Comment construire un initialiseur de tableau statique à partir de tuples ou de modèles variadiques en C ?
Création d'un initialiseur de tableau à partir d'un tuple ou de paramètres de modèle variadiques
Lorsque vous traitez des configurations de mémoire persistante qui doivent être intégrées dans le code du programme , il est nécessaire de représenter statiquement la description de la mise en page. Cela implique de lier un ID particulier à la mise en page, de calculer les décalages au moment de la compilation et de créer un initialiseur de tableau qui peut être itéré au moment de l'exécution sans les restrictions de std::get(std::tuple).
Approche de modèle variadique
Pour permettre l'accumulation et la création de séquences au moment de la compilation, envisagez d'utiliser des modèles variadiques. Chaque entrée peut être constituée d'un identifiant et de la taille ou du type d'un élément particulier. Le groupe d'entrées de niveau supérieur est défini comme un modèle « Mise en page » et chaque entrée est représentée par un modèle « Entrée ».
Exemple d'utilisation
<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...>;</code>
<code class="cpp">template<typename Key, Key identifier, typename Data> struct Entry {};</code>
Pour utiliser cette approche :
<code class="cpp">Layout< FooEnum, Entry< FooEnum, eFoo, char[10]>, Entry< FooEnum, eFoo2, double> > layout;</code>
Après avoir implémenté le modèle de pré-ajout pour ajouter un élément au début d'un tuple, Layout
Considérations supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!