Метапрограммирование
Курс посвящен продвинутому программированию на С++ с использованием шаблонов.
Различные подходы и механизмы рассматриваются вместе с их реализацией. Приводятся несколько реализаций: современная и ретроспективная, что помогает лучше понять современные стандарты языка.
Для кого предназначен:
Курс предназначен для студентов, хорошо знающих язык программирования С++ и желающих углубить свои знания в области программирования с использованием шаблонов.
Пререквизиты:
Необходимо знать язык программирования С++ на довольно высоком уровне.
Нужно быть знакомым с последними стандартами: С++11, С++14, С++17
Приблизительная программа:
- Введение в программирование, основанное на шаблонах
- Хранение типа как объекта данных, различные подходы
- Списки типов
a) создание
b) обработка
c) операция получения размера списка
d) операция получения элемента по индексу
e) операция поиска элемента / элементов
f) операции добавления и удаления элементов
- Фабрики объектов
a) различные подходы к реализации на С++
b) фабрика клонирования
c) абстрактные фабрики
- Генерация классов на основе списка типов
a) генерация распределенных иерархий
b) генерация кортежей
c) генерация линейных иерархий
d) генерация сложных иерархий
- Обобщенные функторы
a) шаблон Command
b) вызываемые сущности в языке С++
c) скелет шаблонного класса функтора
d) преобразования типов аргументов и возвращаемого значения
e) указатели на функции-члены
f) связывание и сцепление
- Мультиметоды
a) двойное переключение по типу — грубый подход
b) симметричность грубого подхода
c) логарифмический двойной диспетчер
d) двойная диспетчеризация функторов
e) мультиметоды
Нагрузка:
12 семинаров — 24 часа
3 домашних задания — 18 часов
Аудиторная работа – 42 часа
Самостоятельная работа – 34 часа
Преподаватель: Денис Крахмалев
По понедельникам
с 16:40 до 19:30 (только семинары)
1 модуль
23 сентября - первое зантие - ауд. R601
С 30 сентября по 21 октября – ауд.G114 (на 30 человек семинарская)
С 28 октября по 25 ноября – ауд.G115 (семинарская)
С 2 декабря по 16 декабря – ауд.G114 (семинарская)