До питання узагальненого метапрограмування в C++

Loading...
Thumbnail Image
Date
2025
Authors
Бублик, Володимир
Трохимчук, Артем
Journal Title
Journal ISSN
Volume Title
Publisher
Національний університет "Києво-Могилянська академія"
Abstract
Програмування історично розвивалося у двох основних стилях: імперативному та декларативному (зокрема, функціональному). Ітерація є ключовим засобом організації обчислень в імперативному програмуванні, яке, за своєю суттю, є програмуванням над комірками пам'яті. На противагу цьому, рекурсія є основним інструментом функціонального (декларативного) програмування, яке не вимагає явного керування пам'яттю та операцій присвоєння.
Description
The paper explores C++ metaprogramming as a form of declarative functional programming that originates from Alonzo Church's lambda calculus. Paper describes the imperative approach based on iteration with the functional style centered around recursion. The core of C++ metaprogramming, the template system, is analyzed. Key techniques such as Substitution Failure Is Not An Error (SFINAE) and template specializations are explored in detail. The methods enable compile-time computations, turning the template language into a Turing-complete functional programming language within C++ itself. As a practical demonstration, the paper presents a modern solution to the "Abstract Factory" design pattern problem, originally formulated by A. Alexandrescu, showcasing the power of template metaprogramming in C++.
Keywords
метапрограмування, мова шаблонів, C++, SFINAE, матеріали конференції
Citation
Бублик В. В. До питання узагальненого метапрограмування в C++ / Бублик В. В., Трохимчук А. А. // Теоретичні та прикладні аспекти побудови програмних систем : праці 16 Міжнародної науково-практичної конференції, 23-24 листопада 2025 року, Київ / [за заг. ред. М. М. Глибовця, Т. В. Панченка та ін. ; Факультет інформатики Національного університету "Києво-Могилянська академія" та ін.]. - Київ : НаУКМА, 2025. - С. 75-77.