問題タブ [std-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 に答える
6075 参照

c++ - std::function が nullptr に割り当てられているかどうかを確認する

に割り当てた関数ポインタstd::functionnullptr. !-operator がそれを行うことを期待していましたが、関数に type の何かが割り当てられている場合にのみ機能するようですnullptr_t

今のところ、これを回避するためにこのヘルパー関数を作成しました。

0 投票する
3 に答える
248 参照

c++ - std::関数は合計可能な型を返しますか?

並列アルゴリズムのグラフ データ構造には、次の反復子メソッドがあります。

関数をテンプレート パラメーターとして宣言することもできhandleましたが、C++11 で推奨される方法は を使用することだと思いましたstd::function

このようなイテレータで OpenMP を使用して、並列リダクションを実行したいと考えています。への各呼び出しの戻り値はhandle合計に縮小されます。関数テンプレートを使用すると、次のようになります。

を使用して同等のものは何std::functionですか? double または int を返す型を定義できますhandleか (関数の本体は両方で機能するため)。

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

c++ - 非静的クラス メンバを Win32 コールバック関数 WNDPROC に「std::bind」するにはどうすればよいですか?

WNDPROC非静的クラス メンバーを標準関数にバインドしようとしています。クラスメンバーを静的にすることで、これを簡単に実行できることはわかっています。しかし、C++11 STL の学習者として、<functional>ヘッダーの下にあるツールを使用してそれを行うことに非常に興味があります。

私のコードは次のとおりです。

そのまま実行すると、次のエラー メッセージが表示されます。

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

function - std::function でポリモーフィズムを使用するにはどうすればよいですか?

2つのクラスがあるとしましょう:

そしてstd::function、タイプA のすべてを受け取りますが、 Aから継承するクラスを受け取る割り当てメソッドを使用したい( Bなど)。

コンパイラは暗黙的にダウンキャストするだけではないため、これは明らかに機能しません。

しかし、どうすればこのようなことができますか? 基本的に、いくつかの基本的な std::function 型のマップを保持したいと思います。マップされた各値では、Bstd::functionのような派生型を保持します。

キャスト演算子をプレースホルダーにバインドする方法はありますか?

0 投票する
3 に答える
2438 参照

c++ - std::function をシリアル化できますか?

これは理論的な問題です。それらのオブジェクトのイベントにサブスクライブされたコールバック関数のリストを含むいくつかのオブジェクトがあるとします。これらのオブジェクトをディスクに保存します。std::functionシリアライズ可能ですか?

0 投票する
3 に答える
141 参照

c++ - テンプレート関数を別のテンプレート関数の引数にするにはどうすればよいですか?

さまざまなアルゴリズムを保持するクラスがあります。

これらは次の方法で呼び出すことができます。

ここで、「アルゴリズム」関数を取り、その関数を呼び出す前後に同じ手順を実行する関数を作成したいと考えています。
ここに私が持っているものがあります:

次のように関数を呼び出そうとすると:

私が得るエラーは次のとおりです。

目的のアルゴリズムをパラメーターとして受け取る一般的なルーチンを設定するにはどうすればよいですか?

編集:
このソリューションは希望どおりに機能しました。次のようになります。

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

c++ - 2 つの異なる明示的なコンストラクターに暗黙的に変換可能な std::bind の戻り値の型

explicit2 つのコンストラクター オーバーロード (異なる型に基づく)が与えられstd::function<...>た場合、の戻り値はどちらかstd::bindを選択できます(それにより、呼び出しがあいまいになります)。

どちらかをコメントアウトすると、コードがコンパイルされます!

explicitコンストラクターを作成すると、正しいオーバーロードが選択されるか、両方が選択されないようになると思いましたか?

もちろん、バインドした時点で明示的にa を作成すると、次のように機能します。std::function

しかし、なぜ型推論が機能しないのか、私は戸惑っていますか?

  • からの戻り値std::bindが 2 つのコンストラクター シグネチャのいずれにも一致しない場合、それらがexplicit両方とも選択されないようにする必要があります。
  • からの戻り値std::bindが 2 つのコンストラクター シグネチャのいずれかに一致する場合、それらが一致するという事実explicitにより、正しいものが選択されるはずです。

ここで実際に何が起こっているのですか?

以下の完全な作業コード: