std::vector<int*>みたいなのにソートアルゴリズムやもろもろのアルゴリズムを使うときに
std::less<int>とかがそのまま使えないけど みなさんはどうやってますか??
私はこんなの作ってしのいでますが・・・何かいい物がすでにあるのかな??
template<
class arg1,
class arg2,
class result,
class binary_function
>
class binary_ptr_ref_fun : public std::binary_function<arg1,arg2,result>
//ポインタを外して コンストラクタで渡した関数を実行してくれる関数オブジェクト
{
private:
binary_function func_;
public:
typedef arg1 first_argument_type; //bccのバグ? typedefしなおさないといけない(T_T)
typedef arg2 second_argument_type;
typedef result result_type;

binary_ptr_ref_fun(binary_function func) : func_(func){}
result_type operator()(first_argument_type val1,second_argument_type val2)
{
return (result_type)func_(*val1,*val2);
}
};

template<class arg,class binary_function>
binary_ptr_ref_fun<
arg,
arg,
binary_function::result_type,
binary_function
>
ptr_ref_fun2(binary_function func)
{
//binary_ptr_ref_funを作ってくれる関数
//スマートポインタなどにも使えるようコンテナに入ってる型は
//自分でtemplateパラメータを指定する
binary_ptr_ref_fun<
arg,
arg,
typename binary_function::result_type,
binary_function
> obj(func);
return obj;
}

こんな風に使ってます
std::vector<int*> v;
//vにいろいろ要素を追加
std::sort(v.begin(),v.end(),
ptr_ref_fun<int*>(std::less<int>()));