Программирование на языке C++. Продвинутый поток весна 2026
Содержание
Общие сведения о курсе
Курс «Программирование на языке C++. Продвинутый поток» предназначен для изучения продвинутых аспектов программирования на C++
Руководитель курса
Илья Мещерин
Материалы занятий
- Репозитарий mipt-cpp-spring.advanced.manytask.org
- Гитлаб gitlab.manytask.org/mipt-cpp/advanced/public-2026-spring
Программа курса
Список тем второго семестра:
- 1. Аллокаторы. Использование аллокаторов в контейнерах. Перегрузка операторов new и delete.
- 2. Пространства имен и поиск имен. Argument-dependent lookup. Трюк Бартона-Нэкмана.
- 3. Заголовочные файлы. Связывание символов. Статическая и динамическая инициализация. Ключевые слова extern, inline.
- 4. Move-семантика. Rvalue-ссылки. Функции std::move и std::forward. Return value optimization, copy elision.
- 5. Вывод типов. Ключевые слова auto, decltype. CTAD. Structured bindings. Кортежи.
- 6. Умные указатели. Классы std::shared_ptr, std::weak_ptr и их реализация. Функция std::make_shared.
- 7. Лямбда-функции. Списки захвата. Обобщенные лямбда-функции. Элементы функционального программирования.
- 8. Шаблонное метапрограммирование. Идиома SFINAE. Метафункция std::enable_if. Comma trick. Реализация std::is_constructible. Реализация std::is_base_of.
- 9. Вычисления на этапе компиляции. Constexpr, consteval, constinit. Функция std::is_constant_evaluated.
- 10. Идиома type erasure. Класс std::any и его реализация. Класс std::function и его реализация.
- 11. Ограничения и концепты. Стандартные концепты и их реализация.
- 12. Type aliasing. Класс std::variant и его реализация. Функция std::launder.
- 13. Диапазоны и представления. Ниблоиды. Customization point objects.