Программирование на языке C++. Продвинутый поток весна 2026

Материал из Public ATP Wiki
Перейти к: навигация, поиск

Общие сведения о курсе

Курс «Программирование на языке 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.