gpt4 book ai didi

C++ - 从可变参数模板创建元组

转载 作者:行者123 更新时间:2023-11-30 01:42:09 25 4
gpt4 key购买 nike

我有带有可变模板类的 C++11 代码

template <typename R, typename ...ARGS>
class MyFunction
{
}

我有一个这样定义的方法

template <typename T, typename T2>
void Callback()
{
MyFunction<T, T2> * fptr12 = (MyFunction<T, T2> *)f;
fptr12->args = std::make_tuple(GetInput<T2>());
fptr12->call();
}

template <typename T, typename T2, typename T3>
void Callback()
{
MyFunction<T, T2, T3> * fptr12 = (MyFunction<T, T2, T3> *)f;
fptr12->args = std::make_tuple(GetInput<T2>(), GetInput<T3>());
fptr12->call();
}

f => 在字典中定义为接口(interface)IFunction(它是根据其他参数从字典中检索的,但总是返回正确的函数,所以它可以被转换)

我想让方法 Callback 对任意数量的参数 (Tx) 通用,因此它可以与任何 MyFunction 一起使用。我可以向它添加可变参数模板,但我不知道如何生成元组。

最佳答案

你只需要扩展可变参数列表:

template <typename T, typename... Tn>
void Callback() {
MyFunction<T, Tn...>* fptr = static_cast<MyFunction<T, Tn...>*)(&f);
fptr->args = std::make_tuple(GetInput<Tn>()...);
fptr->call();
}

关于C++ - 从可变参数模板创建元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40060728/

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