の入力/出力タイプを取得し、私は次のような問題があります:あなたが上見ることができるように呼び出し可能
template<typename Func, typename T_in = /*input type of Func */, typename T_out = /*output type of Func */>
std::vector<T_out> foo(Func f, const std::vector<T_in>& input)
{
std::vector<T_out> res(input.size());
for(size_t i = 0 ; i < input.size() ; ++i)
res[ i ] = f(input[ i ]);
return res;
}
int main()
{
// example for f(x) = x*x
std::vector<float> input = { /* ... */ };
auto res = foo([](float in){ return in*in; }, input);
return 0;
}
が、私は入力ベクトルinput
の各要素に機能f
をマップする機能foo
を実装しようとします。入力ベクトルinput
の要素の入力タイプをf
(つまりT_in
)、出力ベクトルの要素の出力タイプをf
(つまりT_out
)にしたいが、 foo
に明示的に出力タイプf
(コードの可読性が向上しているため)コンパイル時に入力/出力タイプf
がどのように自動的に導き出されるのか、誰にでも分かりますか?
事前に感謝します。
ありがとうございます。簡単にするために、私は上記の私のポストで単純化した例を使用しました。残念ながら、私の実際の例は、標準ライブラリを使用して実装することはできません。 –