Недавно я смотрел выступление Андрея Александреску в «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, но с меньшей обратной совместимостью?
Задача ещё не решена.