読者です 読者をやめる 読者になる 読者になる

Boost.ScopeExit 空のキャプチャリスト

C++

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の空引数マクロに対応してるからですね。