Boost.ScopeExit 使ってみた

そういえば、使ったことがないので試してみた。
Boost.ScopeExit を使用すると『そのスコープを抜けるときの処理』を記述する事ができます。
例えば、スコープの最初の方に『最後に呼ばれる処理』みたいなことを定義する事ができます。

[ソース]

#define BOOST_SCOPE_EXIT_CONFIG_USE_LAMBDAS
#include <boost/scope_exit.hpp>
#include <iostream>

int
main(){
	BOOST_SCOPE_EXIT(void){
		std::cout << "小梅" << std::endl;
	};
	BOOST_SCOPE_EXIT(void){
		std::cout << "幸子" << std::endl;
	};
	std::cout << "ちひろ" << std::endl;
	return 0;
}

[出力]

ちひろ
幸子
小梅


C++11 の場合は BOOST_SCOPE_EXIT_CONFIG_USE_LAMBDAS を定義しておくことで内部でラムダが使用されるようになり、すっきりと書けるようになります。