std :: tuple作为类成员

时间:2013-10-27 17:05:13

标签: 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’

代码有什么问题?

1 个答案:

答案 0 :(得分:10)

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

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

你不需要make_tuple

: tuple_(args...)