オーバーロード関数をファンクタとして渡すときにあると便利かもしれないマクロ

http://d.hatena.ne.jp/faith_and_brave/20080205/1202201978
http://d.hatena.ne.jp/wata_d/20080205/1202219892
テキトーなのを書いてみました:

OVERLOAD_ADAPTOR(double, stod) stod_a;

transform(ar, ar + 3, back_inserter(v), stod_a)
#define OVERLOAD_ADAPTOR(R, FUNC) \
struct overload_adaptor_for_ ## FUNC \
{ \
	typedef R result_type; \
	template <typename A1> \
	R operator() (A1 a1) const { return FUNC(a1); } \
	template <typename A1, typename A2> \
	R operator() (A1 a1, A2 a2) const { return FUNC(a1, a2); } \
	template <typename A1, typename A2, typename A3> \
	R operator() (A1 a1, A2 a2, A3 a3) const { return FUNC(a1, a2, a3); } \
        // append more if you wish ...
}

名前空間使えないし、実用には耐えませんね!(>_<)

#普段はまじめに一つずつラッパー書いてます。。。