如何在 POD 数组(c 数组)中总结我的可变参数模板方法的参数?目前我不知道迭代参数......
enum class ParamId {kTyp1, kTyp2, kTyp3};
struct Params
{
ParamId* ids;
int32 count;
};
template <typename... Args>
Params add (const ParamId& value, Args&&... values)
{
constexpr int32 count = sizeof... (Args);
ParamId* params = new ParamId[count];
for(int32 i=0; i<count; i++)
{
params[i] = ????
}
return Params {params, count};
}
编辑:我没有使用 for 循环,而是使用反向迭代方法。不幸的是,我需要另一种方法。也许有更好的方法。我将第一个参数添加到我的列表中。
enum class ParamId {kTyp1, kTyp2, kTyp3};
struct Params
{
ParamId* ids;
int32 count;
};
template <typename... Args>
Params add (ParamId value, Args&&... values)
{
constexpr int32 count = 1 + sizeof... (Args);
ParamId params [count];
int32 num = 0;
params[num] = value;
iterate(¶ms[0], num++, values...);
return Params {params, count};
}
template <typename... Args>
void iterate (ParamId* params, int32 num, ParamId value, Args&&... values)
{
params[num] = value;
iterate(params, num++, values...);
}
void iterate (ParamId* params, int32 num) {}
你可以这样做1:
constexpr std::size_t count = 1 + sizeof... (Args);
ParamId* params = new ParamId[count] { value, values... };
假设你想把它value
作为第一个元素,你在问题中说但不是代码所做的。
但在我看来,你最好使用std::vector
directlry。
1请参阅此答案以供参考。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句