以下教学示例说明了我的问题:
#include <iostream>
#include <cmath>
template<class Function, class... Args>
double apply(Function f, Args... args)
{
return f(args...);
}
template<class Function, class... Args>
double applybis(Function f, Args... args)
{
return f(std::sin(args...));// <- How to apply a function to
// each variadic parameter and
// return a modified variadic list ?
}
int main(int argc, char* argv[])
{
std::cout<<apply(static_cast<double(*)(double)>(std::sin), 3.)<<std::endl;
return 0;
}
如何通过将函数应用于每个组件并返回修改后的可变参数列表来“转换”可变参数列表?(有没有办法在不修改其当前签名的情况下编写 applybis 函数?)