В настоящее время каждый разработчик C++ знаком с технологией Resource Acquisition Is InitializationRAII. Он связывает получение и высвобождение ресурсов с инициализацией и уничтожением переменной, удерживающей ресурс. Бывают случаи, когда написание специального класса для такой переменной не стоит усилий. Это когдаBoost.ScopeExitвступает в игру.
Программисты могут помещать приобретение ресурсов непосредственно в свой код, а рядом с ним они могут писать код, который высвобождает ресурс с помощью этой библиотеки. (см. также<world.cpp>):
voidworld::add_person(personconst&a_person){boolcommit=false;persons_.push_back(a_person);// (1) direct action// Following block is executed when the enclosing scope exits.BOOST_SCOPE_EXIT(&commit,&persons_){if(!commit)persons_.pop_back();// (2) rollback action}BOOST_SCOPE_EXIT_END// ... // (3) other operationscommit=true;// (4) disable rollback actions}
Более старые версии этой библиотеки использовали последовательностьBoost.Preprocessorдля указания списка захваченных переменных. При сохранении полной обратной совместимости теперь можно указать захваченные переменные, также используя список, разделенный запятой (который является предпочтительным синтаксисом). См. разделNo Variadic Macrosдля получения дополнительной информации.
Последний пересмотр: 21 сентября 2016 в 14:49:31 GMT
Статья Chapter 1. Boost.ScopeExit 1.1.0 раздела Chapter 1. Boost.ScopeExit 1.1.0 может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.