c++ - 来自元组的构造函数参数

标签 c++ templates c++11 constructor stdtuple

假设我有一个模板,它由一个类类型和一些参数类型参数化。一组匹配这些类型的参数存储在一个元组中。如何将这些传递给类类型的构造函数?

几乎在 C++11 代码中:

template<typename T, typename... Args>
struct foo {
  tuple<Args...> args;
  T gen() { return T(get<0>(args), get<1>(args), ...); }
};

构造函数调用中的...不定长怎么填?

我想我可以想出一些复杂的递归模板调用机制来执行此操作,但我不敢相信我是第一个想要这个的人,所以我想会有现成的解决方案来这在那里,甚至可能在标准库中。

最佳答案

C++17 有 std::make_from_tuple为此:

template <typename T, typename... Args>
struct foo
{
  std::tuple<Args...> args;
  T gen() { return std::make_from_tuple<T>(args); }
};

关于c++ - 来自元组的构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20408802/

相关文章:

templates - Vue JS v-bind 图像 src 属性组合路径字符串与对象值不起作用

c++ - 动态类成员

c++ - 为什么 C++11 隐式删除了我的默认构造函数?

C++ round(49.5) 在使用变量调用时返回 49(在 Qt 中)

c++ - 将浮点值从大端转换为小端

c++ - 匹配作为 void* 与 GMock 传递的 C 样式数组

C++ lambda 测试拦截器/模拟

c++ - 努力使用模板化结构选择类型

c++ - std::function 模板参数中的 const

c++11 - C++ : template class inheritance with variable-type parameters using parameter packs