関数の範囲に引数を適用する標準的な方法はありますか? 以下にリストされているような解決策を思いつきましたが、それは間違っているように感じます.そのようなロジックを構築するための何かがすでにあるはずです.
template<typename Function, typename Result, typename Argument>
struct apply_argument_t {
Argument x;
Result operator () (Function f) {
return f (x);
}
};
したがって、単純な使用例:
transform (in.begin(), in.end(), out.begin(), apply_argument(x));
意図的に実装の詳細をスキップしました。
編集:とにかく、彼らが求められたように:
in
単項関数の範囲です (例: vector<int(*)(char)>
)
out
これらの単項関数の結果の範囲です (例: vector<int>
)
apply_argument
構造に似ていますが、テンプレートの指定と初期化はありません (例: apply_argument_t<int(*)(char), int, char>
)
また、C++11 のソリューションが検索されていないという発言を見逃していました。