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

c++ - 関数オブジェクトはオーバーロードの解決にどのように影響しますか?

関数オブジェクトは、オーバーロードの解決中に通常の関数とは異なる方法で処理されますか? もしそうなら、どのように?

関数を同等に呼び出し可能な関数オブジェクトに置き換えると、コードの意味が変わる次のケースに遭遇しました。

ここでの出力は「N::bar」です。これまでのところ、N::bar は ADL によって検出されており、N::bar とグローバル バーの両方が完全に一致しており、N::bar はテンプレートではないため優先されています。

しかし、グローバル バーを関数オブジェクトに変更すると、次のようになります。

出力は「グローバル バー」になりました。違いはなぜですか?

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

c++ - 関数オブジェクトのシリアル化

std::functionC ++で一般的に、、関数オブジェクト、またはクロージャをシリアル化および逆シリアル化することは可能ですか?どのように?C ++ 11はこれを容易にしますか?そのようなタスクに利用できるライブラリサポートはありますか(たとえば、Boostで)?

たとえば、C ++プログラムにstd::function、別のマシンにある別のC ++プログラムに(たとえばTCP / IPソケットを介して)通信する必要があるがあるとします。そのようなシナリオで何を提案しますか?


編集:

明確にするために、移動される関数は純粋で副作用のないものであると想定されています。したがって、セキュリティや状態の不一致の問題はありません。

この問題の解決策は、小さな組み込みドメイン固有言語を構築し、その抽象構文ツリーをシリアル化することです。代わりに、マシンに依存しない関数の表現を移動するための言語/ライブラリのサポートが見つかることを期待していました。

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

c++ - 一時関数オブジェクトの呼び出しにおけるあいまいさの解析

以下のコードでは、コンストラクター引数と関数呼び出し演算子引数の両方を使用した一時関数オブジェクトの呼び出しは、最も厄介な解析の問題のために、どういうわけかあいまいであると思われます。

Ideoneに出力します。

のように括弧を追加すると問題は解決しますが、宣言として解析(Fun(a))(b)する方法がよくわかりません。Fun(a)(b)Fun a

0 投票する
9 に答える
55542 参照

casting - TypeScriptのプロパティを使用して関数オブジェクトを作成します

いくつかのプロパティも保持されている関数オブジェクトを作成したいと思います。たとえば、JavaScriptでは次のようにします。

TypeScriptでは、このタイプを次のように説明できます。

しかし、キャストを必要とせずに実際に構築することはできません。そのような:

キャストなしでこれをどのように構築しますか?

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

c++ - C++ std:sort() 異なる基準を使用

私はたくさん検索しましたが、これがクエリが繰り返されているかどうかはわかりませんが、これstd::vector参照として使用して、次のタイプのデータを取る私のソートを作成しました。

基準ごとに個別の関数オブジェクトを作成できました。sizeただし、私のプロジェクトの要件では、 、 、に従ってソートするためのすべての関数オブジェクトを含めるには、クラスまたは構造体が 1 回だけ必要であるtypeと述べていますid。すべての関数オブジェクトをstd::sort1 つのクラスに含めることは可能ですか?

私は次のようなことを意味します

要件を満たすためにも調べましbinary_functionsたが、単一のクラスで複数の関数オブジェクトを宣言すると、エラーが発生しました。

std::sortさらに、(さらに言えば、比較を含む STL アルゴリズム) の関数オブジェクトが必要であるbool operator()か、またはそれらが通常の関数を返す必要がありboolますか?

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

c++ - 構造体 (またはクラス) の内部関数をファンクターとして渡す

struct 内の関数をファンクターとして渡すにはどうすればよいですか? 私はこれがうまくいくはずだと思っていましたが、うまくいきませんでした:

取得する<unresolved overloaded function type>

0 投票する
0 に答える
297 参照

c++ - 関数オブジェクトのセキュリティ リスク

私は C++11 に関する記事を読んでいましたが、著者は、ラムダを使用する利点の 1 つは、関数オブジェクトの退屈さとセキュリティ リスクを回避することであると述べました。

FO のセキュリティ リスクにはどのようなものがありますか?

出典: C++11 の最大の変更点と、注意が必要な理由

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

c++ - APIが関数ポインタを要求するときに関数オブジェクトを使用する

C++からCAPIを呼び出したい。APIは関数ポインターを想定していますが、私にとっては、状態があるため、機能はC++関数オブジェクトに実装されています。

実際、必要な機能は2つの関数オブジェクトに分割されます。C apiは、各関数オブジェクトが返す2つのものを返すための2つのポインターパラメーターを持つ関数を想定しています。

グローバル関数を定義する以外に、Cの関数オブジェクトを使用する方法はありますか。たとえば、関数ポインターに再解釈できますか?

編集:

簡単にするために、コールバックの署名が無効であると想定してもかまいません(*f)(void*, int*, int*)

ああ、それはC++-03でなければなりません

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

javascript - javascript拡張プロトタイプとチェーン

プロパティまたは関数を既存の関数オブジェクトのプロトタイプに追加すると、そのプロパティまたは関数がオブジェクトに属していると認識されない理由がわかりません。

例:

ありがとうございました

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

haskell - Function objects in Haskell compile error

I'm trying to create a class Func which represents a function, and then a data type Dot which composes functions. Below is my attempt, but I'm getting compile errors:

I get the following errors:

What do I need to fix to make this compile?

I realise this might seem a bit silly, but I thought it might be useful to be able to carry around different functions as unique types, as one could perhaps attach various metadata to those types (I'm not sure exactly what yet).