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