3

175ページのEffective C++ Meyersのパラグラフ1には、一般化されたファンクターとバインディングについて次のように書かれています。

tr1::function私はあなたがとても驚くべきことを可能にするものを見つけました。チクチクしていない場合は、... の定義をじっと見つめていて、... で何が起こっているのか疑問に思っているからかもしれません。

そして、バインドと機能については彼に同意します。ラムダについて、私はラムダが何をどのように行うかを理解していますが、誰かが本スタイルの驚異的なスニペットまたはラムダが(マイヤーズの用語で)なぜ私の靴下を吹き飛ばすことになっているのかについての口頭での概要を投稿できますか?プレースホルダー構文が使用されている C++ の各領域は、私にはハックのように見えるので (はい、私は機能的な方法について十分に知っているので、基本的なことはしないでください)、bind と MPL での使用方法に同意します。ただし、ラムダの場合は、それを正当化して、天気をレパートリーに入れる必要があるかどうかを判断できるようにしたいだけです。

- 編集 -

This SO answerは、プレースホルダー構文のみを使用したファンクターのインライン作成について言及しており、高度な使用法について言及しています。これはおそらく私が求めているものです...

4

2 に答える 2

4

上記のコメントと質問のリンクに基づいて、私が受け入れる回答は次のとおりです(コミュニティウィキ):

  1. Boost.Lambda は、インライン ファンクター作成の目的を満たします (これは私が好きな用語です)。この機能は Function + Bind で満たすことができますが、必要以上に冗長であり、単純なファンクターの場合、これは不要です。たとえば、上記のコメントに示されている並べ替えです。

  2. Function-Bind ペアと Lambda の間には明らかにセマンティックな重複があります。これは歴史的な成果物であり、Lambda にはその存在理由があるため、Boost に存在します。

于 2010-01-30T11:12:44.987 に答える
0

それについて「クール」なのは、 boost foreachおよびboost parameterと同様に、言語にない構文を C++ に挿入/拡張することです。つまり、無名関数をパラメーターとして直接エミュレートします。

于 2010-01-30T11:36:21.627 に答える