gpt4 book ai didi

c++ - 如何使用可变模板来包装可变数量的函数参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:59 27 4
gpt4 key购买 nike

我想采用可变数量的函数参数,并在函数本身中使用模板包装类包装每个函数参数,并将这些包装类作为参数传递给另一个函数。

假设我有一个简单包装变量的模板类。

template<class T>
class Wrapper
{
public:
Wrapper(T t) : t_(t)
.
.
{}
private:
T t_;
}

我有一个调用函数 g 的函数 f,为 fg< 的每个参数传入 Wrapper 类/i>.

template <typename T1, typename T2, typename T3>
void f(T1 a, T2 b, T3 c)
{
g(Wrapper<T1>(a), Wrapper<T2>(b), Wrapper<T3>(c));
}

函数 g 在这里并不重要,但可以是例如一系列重载函数,每个函数都有不同数量和类型的 Wrapper 类作为其参数。

有没有一种方法可以使用可变参数模板来调用具有可变数量参数的模板方法 f,将相同数量的参数传递给函数 g?

非常感谢任何帮助,托尼

最佳答案

技术术语是parameter packs .

它应该像“简单”一样

template<typename... T>
void f(T... args)
{
g(Wrapper<T>(args)...);
}

当然,这需要你有合适的g功能。

关于c++ - 如何使用可变模板来包装可变数量的函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32241282/

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