如何从可变参数模板参数创建std :: tuple <>?

ZsoltLázár

我有一个使用此模板声明的类:template <typename ...Args>在其中,我有一个声明为std::vector<std::tuple<Args...>> vec;要存储模板指定的数据条目的列表我还有一个声明如下的函数:

void AddVertex(Args... data)
{
    // vec.push_back(std::tuple<Args...>(data));
}

在此函数中,我想向向量添加Args ...的元组。这可能吗?我尝试使用注释中的代码,但是编译器给我一个错误,指出“必须在这种情况下扩展参数包”。

解决方案不起作用,因为元组的template参数已经扩展。

rafix07

您需要同时扩展两者:

  • 模板参数包(Args...

  • 功能参数包(data...):

所以应该是:

    vec.push_back(std::tuple<Args...>(data...));

或更短的形式,使用make_tuple

    vec.push_back(std::make_tuple(data...));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章