我想打一个方法convert,需要一个通用的函数bar(可以是std::function,lambda,functor,...),并将其转换为一个std::function<double(std::array<double, 3>)>.该功能bar可以是:
std::array<double, 3>作为一个参数并返回一个double.在这种情况下,convert写起来并不难:码:
template<typename F>
std::function<double(std::array<double, 3>)> convert (F& bar)
{
std::function<double(std::array<double,3>)> bar_converted = bar;
return bar_converted;
}
Run Code Online (Sandbox Code Playgroud)
doubles为参数并返回一个double.同样在这种情况下,convert写起来并不困难:码:
template<typename F>
std::function<double(std::array<double, 3>)> convert(F& bar)
{
std::function<double(std::array<double,3>)> bar_converted;
auto array_bar = [bar]( std::array<double, 3> x)->double{ return bar(x[0], x[1], x[2]); };
bar_converted = array_bar;
return bar_converted;
}
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何将这两种convert方法结合起来,或者这是否可能?