gpt4 book ai didi

c++ - 具有参数包或初始化程序列表的c++ 20 View

转载 作者:行者123 更新时间:2023-12-03 07:09:07 26 4
gpt4 key购买 nike

我想对函数采用可变数量的参数,然后对它们进行查看。我需要对每个应用多个功能。我一直试图使它与参数包和初始化程序列表一起使用。这些解决方案为何不起作用,有什么办法可以做到这一点?
理想情况下,最终功能应如下所示:

template <typename some_way_of_taking_multiple_arguments>
void foo(some_way_of_taking_multiple_arguments bar) {
using namespace std::views;
auto data = bar | transform(func1) | transform(func2);
other_func();
data | transform(func3);
}
当我尝试像这样调用函数时:foo({arg1,arg2,arg3}),它无法推断出模板类型。

最佳答案

只要所有参数都是相同的类型,就可以像这样构造initializer_list:

void foo(auto ... bar_args) 
{
using namespace std::views;

std::initializer_list bar{bar_args...}; // uses CTAD to deduce type

auto data = bar | transform(func1) | transform(func2);
data | transform(func3);
}
并像这样调用它:
int main()
{
int a=1, b=2, c=3, d=4;
foo(a,b,c,d);
}
这是 demo

关于c++ - 具有参数包或初始化程序列表的c++ 20 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63782452/

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