Шаблоны и общее программирование
Пишите действительно общие, многоразовые абстракции с нулевым расходом, используя шаблоны, концепции и программирование на компиляцию.
Шаблонные основы
Шаблоны функций и тип дедукции
Научитесь писать функции, которые работают с любым типом. Поймите вывод аргумента шаблона, параметры нетипа и почему шаблоны живут в заголовках.
Классные шаблоны и CTAD
Создание общих структур данных с шаблонами классов. Поймите определения членов, аргументы по умолчанию и то, как CTAD C++17 позволяет опустить аргументы шаблона.
Расширенные шаблоны
Специализация шаблонов и Tag Dispatch
Овладейте полной и частичной специализацией, узнайте, когда предпочесть перегрузку, и найдите отправку тегов и если constexpr в качестве альтернативы для ветвления компиляции времени.
Вариадные шаблоны и складные выражения
Обработайте любое количество аргументов шаблона с помощью пакетов параметров. Мастер складывания выражений для элегантной, рекурсивной обработки пакетов.
SFINAE, Type Traits & enable if
Поймите, что сбой замены не является принципом ошибки, используйте черты типа для интроспекции компиляции и ограничивайте шаблоны с помощью enable if.
Современное общее программирование
C++20 Концепции и ограничения
Определение точных требований к шаблонным аргументам с использованием концепций. Напишите более чистый общий код с требованиями клаузул, сокращенных шаблонов функций и стандартных библиотечных концепций.
constexpr, consteval и Compile-Time программирование
Переместите вычисления из среды выполнения в компиляцию времени с помощью constexpr, consteval и constinit. Создавайте таблицы поиска, проверяйте конфигурации и используйте контейнеры Constexpr.
Шаблоны шаблонов метапрограммирования
Мастер расширенных шаблонов шаблонов: CRTP для статического полиморфизма, дизайн на основе политики для гибкой композиции, стирание типов для дженериков времени выполнения и руководящие принципы для использования шаблонов против виртуальной отправки.