Шаблонное метапрограммирование и концепты C++20
От SFINAE до концептов: как ограничивать шаблоны, писать трейты типов и задавать контракты времени компиляции. Практические паттерны C++17 и C++20 без академической теории.
От SFINAE до концептов: как ограничивать шаблоны, писать трейты типов и задавать контракты времени компиляции. Практические паттерны C++17 и C++20 без академической теории.
Как std::variant и std::optional заменяют ненадёжные паттерны C. Дискриминированные объединения, сопоставление с образцом через std::visit и nullable-значения без нулевых указателей.
Какой STL-контейнер использовать и почему. Локальность кэша, стабильность итераторов, стоимость вставки и случаи, когда std::vector превосходит все альтернативы.
Как работают std::span и std::string_view, когда использовать их вместо const-ссылок или сырых указателей и где они ловят ошибки, которые пропускают указатели.
unique_ptr, shared_ptr, weak_ptr — что означает каждый, когда использовать какой и модель владения, делающая сырые указатели снова безопасными.