gpt4 book ai didi

c++ - 如何将函数应用于可变列表的每个组件并返回可变列表?

转载 作者:可可西里 更新时间:2023-11-01 16:37:41 38 4
gpt4 key购买 nike

以下教学示例说明了我的问题:

#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 函数?)

最佳答案

给你:

return f(std::sin(args)...);

也就是说,... 应该在 (args) 之后。

它扩展/解包为这种形式:

return f( std::sin(arg0), std::sin(arg1), ......, std::sin(argN) );

关于c++ - 如何将函数应用于可变列表的每个组件并返回可变列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481093/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com