Scope Guards in C++ | Объекты-охранники в C++

90 подписчиков

12+
12+

1 просмотр

8 дней назад

ПожаловатьсяНарушение авторских прав

90 подписчиков

12+
12+

1 просмотр

8 дней назад

ПожаловатьсяНарушение авторских прав
12+
12+

1 просмотр

8 дней назад

В этом видео мы создадим собственную реализацию Scope Guards на C++ — мощного инструмента, который помогает писать более надёжный и безопасный код без утечек ресурсов и без сложных try/catch-конструкций. Мы шаг за шагом реализуем три класса: - ScopeExit — выполняет действие при любом выходе из области видимости; - ScopeFail — выполняется только при выходе по исключению; - ScopeSuccess — выполняется только при успешном завершении блока. На простых и наглядных примерах вы увидите, как с помощью этих шаблонов можно: - безопасно освобождать ресурсы (файлы, дескрипторы, текущее состояние процесса); - откатывать частичные изменения при ошибках; - временно менять состояние потоков и гарантированно восстанавливать его; - атомарно записывать файлы с временным буфером — только на успехе. Также мы разберём: - зачем нужны deduction guides; - для чего нужен std::decay_t внутри фабричных функций; - как устроены MakeScopeExit, MakeScopeFail и MakeScopeSuccess; - как работают std::uncaught_exceptions() и проверка успешного/неуспешного выхода; - чем Scope Guards в нашем исполнении похожи на аналоги из Abseil, Folly, Qt, GSL, LLVM и Boost. В финале получим полный заголовочный файл, готовый к использованию в ваших проектах без внешних зависимостей. Scope Guards — это небольшая, но очень мощная идиома современного C++, и после этого видео вы сможете уверенно применять её в любых задачах: от управления ресурсами до аккуратных «коммитов» и «откатов» состояния. Примеры кода и заголовочный файл можно найти в репозитории на GitHub: https://github.com/alexey-malov/scope-guards

Название:

Scope Guards in C++ | Объекты-охранники в C++

Категория:

Разное