問題タブ [boost-function]

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.

0 投票する
1 に答える
273 参照

c++ - boost::functionとstd::tr1::functionの間に知っておくべき重要な違いはありますか

私は自分のコードでboostをよく使用していますが、これまでのところ使用を控えていstd::tr1ます。ここで、これら2つが提供できるような、より洗練された関数ポインターが必要です。残念ながら、C+11はまだオプションではありません。boost::function特定のコンパイラー(7.1より前のVisual Studioには特別な移植可能な構文が必要)では扱いにくい場合があることを読みましたがstd::tr1::function、この主題に関する情報は見つかりませんでした。2つの間のメモリ使用量、速度、互換性に関して重要な違いはありますか?

編集:私は現在gcc 4.7を使用していますが、コードはVisual Studioでもコンパイルする必要があり、できれば2005のような少し古いバージョンでもコンパイルする必要があります

0 投票する
1 に答える
106 参照

boost - タイプ定義からboost::関数の戻り値の型を見つけることは可能ですか?

タイプ定義から純粋にboost::関数の戻り値の型を見つけることは可能ですか?

例:

上記の関数型の戻り値の型を見つける方法は?

私のターゲット ビルド システムで c++0x 機能を使用できるかどうかはわかりませんが、どのような解決策も歓迎します。

どうもありがとう、
サック

0 投票する
1 に答える
321 参照

boost - このboost::lambda :: bindの使用法の何が問題になっていますか?

このコードに何か問題がありますか?コンパイルエラーが発生し続けます。基本的に、ボイドリターン関数を非ボイドリターンタイプのシグナルに接続したいと思います。ブーストバージョン:リリース1.46.1

コンパイル中に次のエラーが発生します。

ありがとう。

0 投票する
1 に答える
1298 参照

c++ - 複数のコールバック ハンドラ

スニペットを検討してください:

コンストラクターをコメントアウトすると、Handler2 と Handler3 のサポートを追加できますが、Worker クラスのコンストラクターに渡されたハンドラーを特定する方法はありますか? 現在、メンバ関数 Metadata、Image、Dlink は「callBack」オブジェクトを使用しています。ユーザーハンドラーが別のハンドラーを渡した場合は、区別する必要があります-たとえば、Handler2

実装するために列挙型を使用する必要があるという事実は、実質的に私自身の型システム (差別的な共用体の行 - 別名、バリアント) であり、設計を少し再考する必要があることの確かな兆候でもあります。その場合、私は再設計のために開いています。クラスで定義された N-1 個のダミー ハンドラー (つまり、一度に 1 つのハンドラーのみが使用され、他のハンドラーは何もしない) を持たなければならないことは、オブジェクト モデルが混乱し、凝集度が低くなりますが、誰にもわかりません。

0 投票する
1 に答える
381 参照

c++ - ブースト関数の割り当ては例外をスローします

Boost :: functionは、あるfunction1を別のfunction1に割り当てようとすると、10回に1回例外をスローします。

Taskはのtypedefですboost::function1<void, void*>

具体的なコードは次のとおりです。

具体的には、ブーストfunction_template.hppで、このコードの代入演算子に追跡し、最終的に次のようにスローします。

どうしてこれなの?私のコードに間違っていることを簡単に見つけることができますか?他に必要なものはありますか?

ありがとう

編集:boost :: threadsを使用するように求められることはわかっていますが、win32 / pthreadの周りに独自のラッパーを試しています(楽しみのために)

0 投票する
2 に答える
3679 参照

c++ - Boost bind and boost function, storing functions with arguments in a vector and then executing them

Sorry for the badly-worded title.

I've been looking through the documentation, but I cannot find anything that might solve this problem I have.

Basically I want to store several function1<void, void*> , with arguments provided, in a vector, and then execute them at a later stage.

This is what I want to accomplish:

Now executing task() it wants me to pass an argument, but I passed it in AddSomeTasks? Why is it not using that? Or I have missunderstod the usage of boost::bind?

Thanks

0 投票する
1 に答える
262 参照

c++ - ブースト機能構成

function が必要だとします。それを a で構成して別のwhereを生成double adapter(double)する一般的な方法はありますか? 特に、C++11 を使用せずにこれを行う方法があれば素晴らしいと思います。boost::function<double(...)> functorboost::function<double(...)> functor2functor2(...) == adapter(functor(...))

editboost::function<double(...)>明確にするために、任意の を処理できるもの、つまり、1、2、3 などの引数を何度もコピーして貼り付けることなく異なる長さの署名を持つものを書く方法があるかどうかを知りたいと思っています。

0 投票する
1 に答える
709 参照

c++ - C++ で Posix スレッド プールを安全に破棄する方法

pthread を使用して C++ でスレッド プールを実装しようとしています。スレッド管理に関連するロジックを、これらのスレッドの所有権を取得する 1 つのオブジェクトにカプセル化したいと考えています。つまり、このオブジェクトが破棄されるたびに、スレッドを停止してクリーンアップする必要があります。

スレッドを停止して破棄する最良の方法は何ですか? 開始時にデタッチし、停止時にキャンセルすることは良い解決策ですか? それとも、スレッドをキャンセルして参加する方が良いのでしょうか? 私のコードを見てください。関連するコメントをいただければ幸いです。

WorkerThreadManager.h:

WorkerThreadManager.cpp:

main.cpp:

こちら で説明されているこのコードには問題があることに注意してください。

0 投票する
2 に答える
874 参照

c++ - スレッドプールでのboost::functionの使用に関連するクラッシュ

pthreadを使用してC++でスレッドプールを実装しようとしています。スレッド管理に関連するロジックを、これらのスレッドの所有権を取得している1つのオブジェクトにカプセル化したいと思います。つまり、このオブジェクトが破棄されるたびに、スレッドを停止してクリーンアップする必要があります。

コードをテストしてきましたが、boost :: functionが呼び出されているときに、WorkerThreadManagerオブジェクトを破棄すると、セグメンテーション違反が発生することがわかりました。GDBからのコードとバックトレースを参照してください。boost :: functionがコピー可能であることがわかっている限り、なぜそれが発生するのかはよくわかりません。したがって、キューからコピーを取得したら、それをpop()して、キュー全体を破棄することもできます(いくつかの小さなテスト)そして、関数のコピーを呼び出します。

WorkerThreadManager.h:

WorkerThreadManager.cpp:

main.cpp:

GDB:

助けていただければ幸いです。