std::tuple作为类成员

4

如何创建一个带有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’

代码有什么问题?
1个回答

13

args是可变参数,因此您必须使用...来展开它:

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

你不需要使用make_tuple来实现这个:

: tuple_(args...)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接