我有一个用这个模板声明的类: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/