https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67768
Bug ID: 67768 Summary: Second and subsequent captured variable in variadic template unpaking are default constructed Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dtyazskwindows7 at gmail dot com Target Milestone: --- When you compile and run the following code in gcc6.0 ================================= #include<iostream> #include<utility> #include<tuple> template<std::size_t I,class T>T echo(T v) { return v; } template<std::size_t... Is>auto run(std::index_sequence<Is...>) { int x = 10; return std::make_tuple(echo<Is>([y=x](){std::cout<<y<<std::endl;})...); } int main() { auto v = run(std::make_index_sequence<3>()); std::get<0>(v)(); std::get<1>(v)(); std::get<2>(v)(); } ======================================== output is as follows: 10 0 0