輸入/輸出I型有以下問題:獲取可調用
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;
}
正如你可以看到上面,我試圖實現一個函數foo
其中函數f
映射到輸入矢量input
的每個元素。我的問題如下:我希望輸入向量input
的元素的輸入類型爲f
(即T_in
),並且輸出向量的元素爲輸出類型f
(即T_out
),但是不會將輸入/輸出類型f
明確指定爲foo
(由於代碼具有更好的可讀性)。有沒有人知道如何在編譯時自動推導出輸入/輸出類型f
?
非常感謝提前。
謝謝。爲了簡單起見,我在上面的帖子中使用了一個簡化的示例。不幸的是,我真正的例子不能通過使用標準庫來實現。 –