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

多相ラムダがあるとうれしいこと

C++

多相ラムダはおそらく以下のように書けて

[](const hoge& x){ cout << x << endl; } // 単相ラムダ(monomorphic lambda:C++0xに入る方)
[](const& x)     { cout << x << endl; } // 多相ラムダ(polymorphic lambda)

(const auto&かもしれないけど、シンタックスはここでは些細な問題)


多相ラムダよって生成される関数オブジェクトは以下のようになると思います。

struct F {
    template <class T>
    void operator()(const T& x) const
    {
        cout << x << endl;
    }
};


これがあると、Boost.Fusionのコンテナに対する処理が簡単に書けるんじゃないかと思います。
たとえば、多相ラムダがないうちは、以下のように書くしかないものが

struct disper {
    template <class T>
    void operator()(const T& x) const
    {
        cout << x << endl;
    }
};


vector<int, string, double> t(5, "Hello", 3.14);
for_each(t, disper());


多相ラムダがあればこれだけで済みます。

vector<int, string, double> t(5, "Hello", 3.14);
for_each(t, [](const& x){ cout << x << endl; });


多相ラムダはやくほしいですね。
(単相でもいいから早くほしい)