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

标签 c++ templates visual-c++ variadic-templates variadic-functions

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

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

在此函数中,我想将一个 Args... 元组添加到 vector 中。这可能吗?我试过使用注释中的代码,但编译器给我一个错误,提示“必须在此上下文中扩展参数包”。

This解决方案不起作用,因为元组的模板参数已经展开。

最佳答案

你需要同时展开:

  • 模板参数包(Args...)

  • 函数参数包(data...):

应该是:

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

或者更短的形式,使用make_tuple:

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

关于c++ - 如何从可变参数模板参数创建 std::tuple<>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59338419/

相关文章:

c++ - 为每个查询初始化到 MYSQL 的连接有多糟糕?

c++ - 引用折叠规则未按预期应用?

c++ - 将 LOWORD(wParam) 转换为 const wchar_t*

c++ - 了解 C++ 模板错误

c++ - 行尾的双反斜杠有什么作用?

mysql - 如何使用 MSVC 和 QMake 设置 MySQL?

c++ - 如何乘以 2 个大数?

c++ - MFC:显示/隐藏分隔面板

c++ - Qt - 保持指向存储在 QList 中的内容的指针的最佳方法是什么?

c++ - 避免对非虚拟析构函数进行对象切片