2013-10-27 5 views
3

std::tuple 유형의 구성원으로 개체를 만드는 방법은 무엇입니까?std :: tuple as class member

이 코드를 컴파일하려고했습니다.

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’ 

코드에 어떤 문제가 있습니까?

답변

10

args은 가변이다, 그래서 당신은 ...로를 확장해야 :

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

을 그리고 당신은 이것에 대한 make_tuple 필요가 없습니다

: tuple_(args...) 
관련 문제