en utilisant des fonctionnalités C 0x, il est possible d'initialiser les tableaux locaux ou membres de modèles à partir d'un modèle à partir d'un modèle à partir d'un Liste d'arguments de modèle variadique. Cette solution de contournement a des limitations dues à la profondeur d'instanciation du modèle maximum.
Pour attribuer sélectivement des valeurs au moment de la compilation, une combinaison de modèles variadiques et de métafonctions peut être utilisé. Le modèle Metafunc sert de pack de paramètres qui génère une séquence de valeurs en fonction de son index. Un modèle Generate_Array peut alors créer un tableau de la taille souhaitée à l'aide des valeurs générées.
template
templatestruct MetaFunc { enum { value = index 1 }; }; template class F> struct generate_array { typedef typename generate_array_impl ::result result; }; template class F, unsigned... args> struct generate_array_impl { typedef typename generate_array_impl ::value, args...>::result result; }; template class F, unsigned... args> struct generate_array_impl::value, args...> result; }; template<unsigned... args> struct ArrayHolder { static const unsigned data[sizeof...(args)]; }; template<unsigned... args> const unsigned ArrayHolder<args...>::data[sizeof...(args)] = { args... };
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3