boost::functional

トップページ > 関数型プログラミング >

abstract

必要なヘッダ
<boost/functional.hpp>
出来ること
標準ライブラリの <functional> 改良版
リファレンス
en / jp

sample

#include <algorithm>
#include <functional>
#include <boost/functional.hpp>

bool is_even( int x )
{
	return x%2 == 0;
}

int main()
{
	int arr[] = {1,2,3,4,5,6,7,8,9,10};

	// 普通の関数をstd::not1に渡すにはptr_funが必要
	// × std::find_if( arr, arr+10, std::not1(is_even) );
	std::find_if( arr, arr+10, std::not1(std::ptr_fun(is_even)) );

	// boost::not1なら普通にそのまま渡すことができる
	std::find_if( arr, arr+10, boost::not1(is_even) );

	return 0;
}

etc

このヘッダで用意されている関数は皆、標準ライブラリの<functional> に同じ名前の関数があります。違いは「参照への参照」問題が解決されていることと、 普通の関数ポインタを渡すときに、ptr_fun でくくらなくてもよいこと。

presented by k.inaba (kiki .a.t. kmonos.net) under CC0