問題タブ [boost-bind]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - boost::bind は厳密なエイリアシング規則に違反していますか?
Boost 1.43 と GCC 4.4.3 を使用して、次のコード
次の警告を生成します
boost/function/function_base.hpp:321: 警告: 型がパニングされたポインターを逆参照すると、厳密なエイリアス規則が破られる
-fno-strict-aliasing を設定せずにこれらの警告を取り除く正しい方法は何ですか?
boost - boost::bindの問題
次のコードは、次のファンクターオブジェクトを作成する行でエラーをスローしますTest::fun2
。
コンパイラは私に一連のテンプレートエラーと
これが主なエラーのようです。それにもかかわらず、私はここで何が問題であり、それをどのように解決するのか分かりません。
c++ - 関数へのポインタ
関数をポインターに渡す必要があります。この目的のために、boost::function を使用しています。ポインターをキャッチする関数は、さまざまなシグネチャに対してオーバーロードされます。例えば:
今、私はそこにいくつかのクラスメソッドポインタを渡したい:
c++ - ブーストshared_from_this<>()
shared_from_this<>()
特にbind関数を使用してio_serviceにハンドラーを登録するという観点から、ブーストスマートポインターの使用方法を簡潔に要約できますか。
編集:いくつかの回答は、より多くの文脈を求めています。基本的に、私は「落とし穴」を探しています。これは、このメカニズムを使用して人々が観察した直感に反する動作です。
c++ - boost::bind と boost::lambda::new_ptr を使用して shared_ptr コンストラクターを返す
クラスAを考えると、
boost::function<boost::shared_ptr<A>(B&)>
オブジェクトが必要です。
アドホック関数を作成したくない
私の問題を解決するために、lambda::new_ptr をバインドして解決しようとしています。
つまり、A の new_ptr と shared_ptr のコンストラクターを 2 つのステップでバインドします。明らかに機能しません:
代わりにバインディングを行うにはどうすればよいですか? 前もってありがとう、フランチェスコ
c++ - Boost.Bind - プレースホルダーを理解する
私は次の例を理解しようとしています。これは SOヘルプで以前に投稿されたものと似ていますが (等しくはありません)、boost::bind プレースホルダー引数を理解しています:
最も外側のバインド関数が、最初の引数を 2 番目のバインド ( を期待する_1
) に渡し、2 番目の引数を 3 番目のバインド ( を期待する_2
) に渡す必要があることをどのように認識できるのでしょうか? 私がこれを見る方法は、内側のバインダーが最初に評価されるため、それらは 2 つの単項関数オブジェクトになり、後でオブジェクトのバインダーに渡されるというless<int>
ことです。そして、新しく作成された機能オブジェクトが 2 つのオブジェクトで呼び出されるとa
、最初のインナー バインドにb
移動し、2 番目のインナー バインドに移動します。私が正しければ、_1
2回使用します。私は間違っているに違いない。問題を明確にするために、もう一度質問を繰り返します。外側のバインダーは、どのプレースホルダーがどの内側のバインダーで使用されたかをどのように認識しますか?
c++ - std::for_eachとboost::bindを使用してパラメーターのメンバー関数を呼び出す方法は?
std :: for_eachを使用して、一連の文字列をコンボボックスに追加したいと思います。オブジェクトはタイプCategory
であり、私はそれらを呼び出す必要がありGetName
ます。どうすればこれを達成できboost::bind
ますか?
現在のコードは、を呼び出そうとしているため失敗しますCComboBox::AddString(category)
。これは明らかに間違っています。CComboBox::AddString(category.GetName())
現在の構文を使用して呼び出すにはどうすればよいですか?
c++ - boost::bind内でブースト信号を使用する
boost::signalのトリガーをboost::bindオブジェクトにラップしようとしています。したがって、私が欲しいのは、boost :: functionが呼び出されたときに、いくつかの事前にパッケージ化された引数を使用してシグナルを呼び出すことです。
私が持っているのはこれです:
しかし、これは機能しません。次のエラーが発生します:エラー:bind(、..。の呼び出しに一致する関数がありません
私もこれを試しました:
しかし、「コンテキスト型情報のないオーバーロードされた関数のアドレス」を取得します。
では、これに適した構文は何ですか?
c++ - C++-バインディング関数
次のように記述された(ライブラリAPIなので、関数プロトタイプを変更できません)関数があります。
さて、私の実行のある瞬間に私はContext* local_context;
変数を持っています、そしてこれも変更される可能性がありません。
boost::bind
関数で使用したいのですが、ローカル変数FreeContext
から取得する必要があります。Context
Context*
次のようにコードを書くと、コンパイラーはそれが「違法な間接参照」であると言います。
私はこの問題を次の方法で解決することができました。
しかし、この解決策は私にはあまり良くないようです。のようなものを使用してこれを解決する方法に関するアイデア*_1
。たぶん小さなラムダ関数を書いていますか?