Разница между ScopeGuard11 и Boost.ScopeExit - просто обратная совместимость?
Недавно я смотрел выступление Андрея Александреску в "C++ и после 2012 года" ( Обработка систематических ошибок с C++), в котором он обсуждает свою конструкцию ScopeGuard11, и в частности SCOPE_EXIT
(вторая часть доклада или просто прочитайте код здесь). В то же время я начинаю изучать библиотеку Boost и заметил, что BOOST_SCOPE_EXIT
макрос ( библиотека Boost.ScopeExit).
Эти два, кажется, совершенно разные по реализации (BOOST_SCOPE_EXIT
использования Boost.TypeOf
ничего подобного в ScopeGuard11 SCOPE_EXIT
); и макрос Boost связан с захватом параметров и т. д., что является меньшей проблемой в C++11; но помимо этого, они, кажется, предлагают практически одинаковую функциональность.
Я прав или я что-то упустил? Можно ли сказать, что ScopeGuard11 является "более чистым" механизмом с той же функциональностью Boost.ScopeGuard, но с меньшей обратной совместимостью?