最近、私はVC2010のラムダのサポートについて非常に興奮してきました。私はゆっくりと、この機能がC++をより良いものに変えてくれる可能性を十分に理解し始めています。C++のライブラリプランは0xですか?
しかし、この可能性は、ブーストやQTのような日々のライブラリーのラムダのメインストリームのサポートに大きく依存することに気付きました。
C++ 0xの新機能でこれらのライブラリを拡張する予定があるのか知っていますか?
ラムダは、boost :: lambdaと、それと相互作用するブーストのすべてを実質的に置き換えるものです。 QTはすべてのコンテナにラムダのサポートを追加することができます。SLOT
'後押し:: bind'はラムダに置き換えられていない別のものを対象としています。 'std :: bind'は、束縛関数の仕事をします。代わりに、lambdaは 'boost :: lambda'(およびその後継のboost :: phoenix、afaik)の機能を部分的に置き換えます。ラムダが現在行えないことは、 'boost :: lambda'の多型です。任意の引数型で動作する関数を作成する能力: '_1 ++'は任意の引数型をインクリメントし、 '[](int&a){a ++; } 'はintをインクリメントするだけです。概念がC++のものではなくなったと聞きました。多形ラムダはもう一度オプションです。 –
@litb - 興味深いのは、コンセプトがラムダのタイプパラメータでの障害となった理由を説明する資料へのリンクがありますか? –
私は詳細に議論している論文は知らないが、私はそれをユーズネットで読む。ラムダの 'operator()'テンプレートを拘束するために、 'Blah [](T t){...}'かこれに類するものが必要であると言う方法があったはずです。別の問題は、制約のあるテンプレートでは、他の制約付きテンプレートを呼び出すだけで、テンプレート定義を型チェックできるということです。だから、単純なunconstainedテンプレート 'operator()'を持つラムダでは、このような制約テンプレートでは使えません:template void f(T t){([](u){...}) (t)とする。 } '。 –