Инструменты отладки C++: breakpoints и пошаговая отладка в GDB, AddressSanitizer и UndefinedBehaviorSanitizer, Valgrind для утечек, чтение backtrace из core dump и сборка с отладочной информацией.
Как вычислять на этапе компиляции в C++: constexpr функции и переменные, consteval для гарантированного compile-time, if constexpr вместо SFINAE, static_assert и практическая польза для производительности.
C++ на микроконтроллерах — не то же самое, что C++ на десктопе. Разбираем, что работает без исключений и RTTI, как использовать классы и шаблоны в Arduino-скетчах, std:: alternatives для embedded и ограничения памяти.
Потоки в C++11 и новее: запуск std::thread, защита данных мьютексами, deadlock, condition_variable, async и future, atomic — с примерами и типичными гонками данных.
Файловый ввод-вывод в C++: ifstream/ofstream/fstream, построчное чтение, бинарный режим, проверка ошибок, std::filesystem для путей и директорий — с готовыми рецептами для реальных задач.
Как работает память в C++: стек и куча, сырые указатели, ссылки, new/delete, массивы и утечки, разыменование, арифметика указателей и почему современный C++ старается их избегать.
CMake с нуля: минимальный CMakeLists.txt, исполняемые файлы и библиотеки, подключение зависимостей через find_package и FetchContent, таргеты и свойства, типичная структура C++-проекта.
Практический тур по алгоритмам стандартной библиотеки C++: сортировка, поиск, transform, accumulate, copy_if, remove_if, алгоритмы с <numeric> и <ranges> — с реальными сценариями применения.
Исключения C++ от базового try/catch до своих классов ошибок: стандартная иерархия std::exception, гарантии исключений (basic/strong/nothrow), noexcept и альтернативы — std::expected и коды возврата.
Шаблоны C++ с нуля: шаблонные функции и классы, вывод типов, специализация, variadic templates, concepts из C++20 и почему вся STL построена на шаблонах.
ООП в C++ без воды: конструкторы и деструкторы, наследование, virtual/override/final, виртуальные деструкторы, абстрактные классы и когда полиморфизм вообще нужен, а когда лучше шаблоны.
Лямбды в C++: синтаксис, захват переменных по значению и по ссылке, mutable, generic lambdas, возврат лямбд и где лямбды реально нужны — алгоритмы STL, колбэки, std::thread.
Разбираем семантику перемещения: lvalue и rvalue, конструктор перемещения и move-присваивание, правило пяти, std::move без магии и типичные ошибки при работе с перемещаемыми объектами.
RAII — фундамент современного C++: ресурс захватывается в конструкторе и освобождается в деструкторе. Разбираем применение к памяти, файлам, мьютексам, дескрипторам и пишем свои RAII-обёртки.
Разбираем ассоциативные контейнеры C++: map, unordered_map, set и multimap. Сложность операций, хэш-функции для своих ключей, итерация, try_emplace и типичные задачи: счётчики, индексы, кэши.
Когда брать unique_ptr, когда shared_ptr и зачем нужен weak_ptr. Разбираем владение, make_unique/make_shared, циклические ссылки, deleter и почему сырые new/delete в современном C++ не нужны.
std::vector — основной контейнер C++. Разбираем устройство памяти, size vs capacity, инвалидацию итераторов, reserve и resize, emplace_back и типичные ошибки, которые стоят производительности.
Всё о строках в C++: создание, конкатенация, поиск, срезы, сравнение, преобразование в числа и обратно, типичные ошибки и правила выбора между std::string, std::string_view и char*.