c++ - std::tuple 作为类成员

标签 c++ templates stl

如何创建一个成员类型为std::tuple的对象?

我尝试编译这段代码。

  6 template <class ... T>
  7 class Iterator
  8 {
  9 public:
 10         Iterator(T ... args)
 11                 : tuple_(std::make_tuple(args))
 12         {
 13         }
 14 
 15 private:
 16         std::tuple<T ...> tuple_;
 17 };

但是编译失败,出现如下错误。

variadic.cpp: In constructor ‘Iterator<T>::Iterator(T ...)’:
variadic.cpp:11:33: error: parameter packs not expanded with ‘...’:
variadic.cpp:11:33: note:         ‘args’

代码有什么问题?

最佳答案

args 是可变的,所以你必须用 ... 扩展它:

: tuple_(std::make_tuple(args...))
//                           ^^^

而且你不需要make_tuple:

: tuple_(args...)

关于c++ - std::tuple 作为类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19620818/

相关文章:

C++多重继承函数名冲突

PHP 模板引擎,可以将表示与后台逻辑分离

在 std :string failed 中进行 C++ 十六进制搜索

派生类的c++ vector 仅调用一次构造函数

c++ - 如何判断我是否正在转发到复制构造函数?

c++ - 如何避免在 Visual Studio 中调试到 Boost 源代码?

c++ - 关于最令人烦恼的解析的一个令人困惑的细节

c++ - 将字符串转换为 int 数组时无法让程序在 putty 上运行

c++ - 部分模板特化 - 将类型作为参数传递?

c++ - 如何正确返回一个大 vector