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

TR1のbindは演算子使えない

C++

以下のような、bindによって返される関数オブジェクトに対するoperator<, ==のような演算子による比較は、
Boostのbindではできますが、次期標準のTR1ライブラリにあるbindではできません。
(C++0xの現在のドラフトN2914では、bindの戻り値の型はunspecifiedで、callableであることしか要求されない)

std::sort(v.begin(), v.end(), bind(&hoge::id, _1) < bind(&hoge::id, _2));
    // Boost : OK
    // TR1   : NG

C++0xならラムダ式使えばbindなんていらないよ!」なんですけど、
ラムダ式を使える処理系なんてしばらくはVC10くらいだろうし…。



comp.lang.c++.moderated - std::tr1::bind operators

演算子はTR1提案の一部ではなく、TR1完成後にboost::bindに加えられました。

TR1が完成したあとでも、TR1に含まれるライブラリはけっこういじられてるので(shared_ptrとかRandomとか)
bindが放置されてるだけのような気がします。