本篇主要说明怎么使用tuple作为函数的输入及输出参数;以及参数如何解包。
实例1:元祖输入输出参数 templatevoid print(const TupType& _tuple, std::index_sequence ){ std::cout << "("; (..., (std::cout << (I == 0 ? "" : ", ") << std::get(_tuple))); std::cout << ")n"; } template void print(const std::tuple & _tuple){ print(_tuple, std::make_index_sequence ()); } template //返回tuple auto foo(Args... args) {return std::make_tuple(args...);} template //tuple作为参数 void bar(std::tuple tup) {print(tup);} void test_tuple_in_out_args(){ auto z=foo(1, 3.5, (short)3, "this"); print(z); bar(z); } 实例2:参数解包 template void f3(T t) {cout <<"f3 first="<< t << endl; }//f3(1,"Tom",3.14)-->1,Tom,3.14 template void f3(args... argv){ std::cout <<"f3 size="<< sizeof...(args) << std::endl;//3首先输出 int arr[] = { (f3(argv),0)... };//逗号表达式+初始化列表 }



