gpt4 book ai didi

c++ - 评估参数包

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:32 25 4
gpt4 key购买 nike

这是不使用折叠来评估参数包的唯一方法吗(因为它需要使用运算符)?

#include <iostream>

template<int ...Is, typename Function>
void eval(Function&& f)
{
// (f(Is)...);
auto op = [&f](int i){f(i); return 0;};
auto doNothing = [](auto...){};
doNothing(op(Is)...);
}

int main()
{
eval<0,1,2>([](int x){std::cout << x << "\n";});
}

本质上我想做 (f(Is)...),但出于某种原因,这在 C++ 中是不允许的。有没有比使用上面介绍的解决方法更优雅的方法来实现这一点?

最佳答案

有一个更简单的解决方案:

#include <iostream>

template<int ...Is, typename Function>
void eval(Function&& f)
{
(f(Is),...);
}

int main()
{
eval<0,1,2>([](int x){std::cout << x << "\n";});
}

关于c++ - 评估参数包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58475794/

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