問題タブ [function-object]

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 投票する
2 に答える
149 参照

c++ - for_each奇妙な振る舞い

私はSTLをあまり使わず、学び始めたいので、STLのfor_each機能を使ってとてもシンプルなプログラムを作りました。プログラム全体(ヘッダーファイルを除く)は次のとおりです。

プログラムはを出力します0。私は間違いなくfor_each間違って使用していますが、このコードの何が正確に間違っていますか?

0 投票する
4 に答える
2587 参照

c++ - std::mapのキーとしてstd::tmを使用する

std ::map-containerのキーとしてstd::tm()を使用したいと思います。しかし、コンパイルしようとすると、多くの(10)エラーが発生します。

例えば:

1.1。

エラーC2784:'bool std :: operator <(const std :: basic_string <_Elem、_Traits、_Alloc>&、const _Elem *)':'const std :: basic_string <_Elem、_Traits、_Alloc>のテンプレート引数を推測できませんでした&'from' const tm'c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ xfunctional 125

2.2。

エラーC2784:'bool std :: operator <(const _Elem *、const std :: basic_string <_Elem、_Traits、_Alloc>&)':'const_Elem*'のテンプレート引数を'consttm' c:\から推測できませんでしたプログラムファイル(x86)\ microsoft visual studio 10.0 \ vc \ include \ xfunctional 125

3.3。

エラーC2784:'bool std :: operator <(const std :: vector <_Ty、_Ax>&、const std :: vector <_Ty、_Ax>&)':'const std ::vector<のテンプレート引数を推測できませんでした_Ty、_Ax>&'from' const tm'c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ xfunctional 125

これはすべて、2つのstd :: tmを比較する関数オブジェクトを「単に」作成する必要があることを意味します。これには標準比較が定義されていないためですか?それとも別のトリックがありますか?(または私には不可能かもしれませんか?^^)

コード:

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

python - 文字列からの関数オブジェクトの作成

質問: Python で文字列を使用して関数オブジェクトを作成する方法はありますか?


情報: sqlite3 サーバー バックエンドにデータを保存するプロジェクトに取り組んでいます。それについて夢中になることは何もありません。コードは信じられないほどありふれたものであるため、DAL クラスはコード生成によって行われることが非常に一般的です。しかし、それは私に考えを与えました。Python で属性が見つからない場合、関数を定義する__getattr__と、エラーになる前にそれが呼び出されます。そのため、パーサーとロジック ツリーを使用して、最初の呼び出しで必要なコードを動的に生成し、関数オブジェクトをローカル属性として保存することができました。例えば:

コンパイル機能を試してみましたが、この種の偉業を達成できるという点では、exec と eval は満足のいくものではありません。複数行の機能を許可するものが必要です。ディスクへの書き込みを伴わない方法以外に、これを行う別の方法はありますか? 繰り返しますが、関数オブジェクトを動的に作成しようとしています。

PS: はい、セキュリティと安定性に恐ろしい問題があることは承知しています。はい、私はこれが恐ろしく非効率的な方法であることを知っています。だから?番号。これは概念実証です。「Python はこれを実行できますか?関数オブジェクトを動的に作成できますか?」私が知りたいのは、優れた代替案ではありません。(ただし、目前の質問に答えた後は、より優れた代替案に自由に取り組んでください)

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

python - 呼び出し可能オブジェクトでデコレーターを使用するときにユーザー定義の関数名を返す

次のコード フラグメントを検討してください。

これは以下を返します:

このオブジェクトbarは と呼ばれる関数のように動作しますが、デコレータと一緒に使用するとbar内部実装の詳細が公開されます。オブジェクトを変更する方法はありますか(おそらく関数に適切な引数を渡すことによって)、代わりに戻ります__call__print_timingname__init__

? print_timingデコレータが通常の機能を引き続き使用できるようにするソリューションが必要です。ランニング print foo()は与える

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

c++ - 関数オブジェクト (ファンクター) とラムダ トレイトの検出

nullary および unary 関数ポインター、std::function オブジェクト、およびファンクター (ラムダを含む) の戻り値の型とパラメーターの型を検出するにはどうすればよいですか?

Boost のfunction_traitsfunctional traitsは、すぐに使えるものではありませんが、それらを補完したり置き換えたりすることはできます。

私はこのようなことができます:

しかし、ファンクター/ラムダに特化するにはどうすればよいですか?

更新:おそらく別の質問に対するこの回答のようなものですが、オーバーロードから専門化に翻訳されていますか?

0 投票する
4 に答える
3189 参照

c# - C#のFuncに相当するC ++

T次のコードは、itemsコレクション内のの特定のプロパティの平均を計算します。

lambda次に、これを次の式で呼び出すことができます。

C ++でこれを行うにはどうすればよいですか?これが私がこれまでに持っているものです:

これをC++で呼び出すにはどうすればよいlambdaですか?


編集:ありがとうございました、これが私が最終的に得たものです:

そしてでmain()

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

c++ - 異なるパラメータ型の単項関数オブジェクトを順番に実行する方法は?

一連の単項関数オブジェクトを順番に実行するメカニズムを設計しています。これらの関数オブジェクトは実行時に割り当てられますが、問題は、これらの関数オブジェクトのパラメーターの型が異なることです。

私がやりたいことは次のようなものです:

C コードを書いている場合、void* をパラメーターとして取るコールバック関数ポインターを使用するしかありません。しかし、私は現在 C++ を使用しています。それを処理するエレガントな方法があるはずです。

私が今考えることができる最善の方法は、抽象ラッパー クラスから仮想的に継承するテンプレート クラスを宣言することです。

このアプローチは私のニーズに合う可能性がありますが、エントリごとに template_pair を割り当てて解放します。この手順はプロセス中に頻繁に呼び出されるため、これがメモリフラグメントを引き起こすかどうかはわかりません。

これを行うより良い方法はありますか?

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

c++ - forループ内の一時関数オブジェクト

関数オブジェクトrandomElementByWeightコンストラクターは、ループの反復ごとに呼び出されますか、それともコンパイラーはこれを何らかの方法で最適化できますか?rand関数が反復ごとに呼び出されることを確認したいので、関数オブジェクトコンストラクターにそれを含める方が良いと思います。

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

c++ - 関数ポインタを設定する前にパラメータをバインドしますか?

何かを試して、いくつかのボイラープレート コードを動的ライブラリ API ラッパーの 1 つに統合したいと考えています。

本質的に、私は次のことをしたいと思います:

これは可能ですか?(Boost かそれ以外か?) ( C++03 )

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

lambda - テンプレート引数に依存する関数型を返す方法は?

std::function関数テンプレートの 1 つのテンプレート引数の型に依存する型のを返したいと思います。

論理的--what-goes-here?--には、戻り値の型を返し、型のF引数を取る関数の関数シグネチャである必要がありますFが、コンパイラ (Visual Studio 2010 Express) にこの意図を伝えることができないようです。(注意:使用例では、 になりますstd::function<bool(F)>。)

(注: のバリエーションを試しましたがstd::result_of<F>::type成功しませんでした。)

これは C++0x で可能ですか?