版权所有 © 2006-2012 Alexander Nasonov, Lorenzo Caminiti
根据 Boost 软件许可协议 1.0 版发布(请参阅随附文件 LICENSE_1_0.txt 或 https://boost.ac.cn/LICENSE_1_0.txt 的副本)
目录
此库允许在封闭作用域退出时执行任意代码。
如今,每位 C++ 开发人员都熟悉资源获取即初始化 (RAII) 技术。它将资源获取和释放绑定到持有资源的变量的初始化和销毁。 有时,为这样的变量编写一个特殊的类是不值得的。这时 Boost.ScopeExit 就派上用场了。
程序员可以直接在他们的代码中放置资源获取,并在其旁边,他们可以使用此库编写释放资源的代码。例如(另请参阅 world.cpp
):[1]
void world::add_person(person const& a_person) { bool commit = 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 operations commit = true; // (4) disable rollback actions }
[1] 此库的旧版本使用 Boost.Preprocessor 序列来指定捕获变量的列表。在保持完全向后兼容性的同时,现在也可以使用逗号分隔的列表(这是首选语法)来指定捕获的变量。 有关更多信息,请参阅无可变参数宏部分。