BOOST_SCOPE_EXITは空のキャプチャリストをサポートしていないので、
以下のようにダミーの変数をキャプチャする必要があります。
#include <iostream> #include <boost/scope_exit.hpp> void hello() { std::cout << "Hello "; } void space() { std::cout << " "; } void world() { std::cout << "World"; } int main() { hello(); int dummy; BOOST_SCOPE_EXIT( (dummy) ) { world(); } BOOST_SCOPE_EXIT_END; space(); }
Hello World
GCC 4.5だと、ダミー変数なしでもできました。
C99とC++0xの空引数マクロに対応してるからですね。