دورية أكاديمية
Template Metaprogramming Techniques for Concept-Based Specialization
العنوان: | Template Metaprogramming Techniques for Concept-Based Specialization |
---|---|
المؤلفون: | Bachelet, Bruno, Mahul, Antoine, Yon, Loïc |
المساهمون: | Laboratoire d'Informatique, de Modélisation et d'Optimisation des Systèmes (LIMOS), Ecole Nationale Supérieure des Mines de St Etienne (ENSM ST-ETIENNE)-Université Clermont Auvergne 2017-2020 (UCA 2017-2020 )-Centre National de la Recherche Scientifique (CNRS), Université Clermont Auvergne 2017-2020 (UCA 2017-2020 ) |
المصدر: | ISSN: 1058-9244 ; Scientific Programming ; https://hal.science/hal-00641006Test ; Scientific Programming, 2013, 21, pp.43-61. ⟨10.3233/SPR-130362⟩. |
بيانات النشر: | HAL CCSD IOS Press |
سنة النشر: | 2013 |
المجموعة: | HAL Clermont Auvergne (Université Blaise Pascal Clermont-Ferrand / Université d'Auvergne) |
مصطلحات موضوعية: | generic programming, template specialization, template metaprogramming, concept-based overloading/specialization, métaprogrammation par patrons, surcharge/spécialisation par concepts, programmation générique, spécialisation de patron, [INFO.INFO-SE]Computer Science [cs]/Software Engineering [cs.SE], [INFO.INFO-PL]Computer Science [cs]/Programming Languages [cs.PL] |
الوصف: | International audience ; In generic programming, software components are parameterized on types. When available, a static specialization mechanism allows selecting, for a given set of parameters, a more suitable version of a generic component than its primary version. The normal C++ template specialization mechanism is based on the type pattern of the parameters, which is not always the best way to guide the specialization process: type patterns are missing some information on types that could be relevant to define specializations. The notion of a "concept", which represents a set of requirements (including syntactic and semantic aspects) for a type, is known to be an interesting approach to control template specialization. For many reasons, concepts were dropped from C++11 standard, this article therefore describes template metaprogramming techniques for declaring concepts, "modeling" relationships (meaning that a type fulfills the requirements of a concept), and "refinement" relationships (meaning that a concept refines the requirements of another concept). From a taxonomy of concepts and template specializations based on concepts, an automatic mechanism selects the most appropriate version of a generic component for a given instantiation. Our purely library-based solution is also open for retroactive extension: new concepts, relationships, and template specializations can be defined at any time; such additions will then be picked up by the specialization mechanism. |
نوع الوثيقة: | article in journal/newspaper |
اللغة: | English |
العلاقة: | hal-00641006; https://hal.science/hal-00641006Test; https://hal.science/hal-00641006v5/documentTest; https://hal.science/hal-00641006v5/file/RR-10-18.pdfTest |
DOI: | 10.3233/SPR-130362 |
الإتاحة: | https://doi.org/10.3233/SPR-130362Test https://hal.science/hal-00641006Test https://hal.science/hal-00641006v5/documentTest https://hal.science/hal-00641006v5/file/RR-10-18.pdfTest |
حقوق: | info:eu-repo/semantics/OpenAccess |
رقم الانضمام: | edsbas.147926C1 |
قاعدة البيانات: | BASE |
DOI: | 10.3233/SPR-130362 |
---|