遍历输出tuple元素的简洁方式(C++11)

//遍历输出tuple元素的简洁方式(C++11)
//Win32Con17_VS2017_01.cpp
#include <iostream>
#include <tuple>
using namespace std;

template<typename... Args>
void myprint_impl(tuple<Args...> tup)        //泛化版本
{
    //cout << get<0>(tup) << ((tuple_size<decltype(tup)>::value > 1) ? ", " : "");
    //cout << tup._Myfirst._Val << ((tuple_size<decltype(tup)>::value > 1) ? ", " : "");
    cout << tup._Myfirst._Val << ((tup._Mysize > 1) ? ", " : "");    //输出tup的头1项
    myprint_impl(tup._Get_rest());                                    //对除头1项之外的tup递归调用
}

template<>
void myprint_impl(tuple<> tup)                //终止条件
{
    cout << endl;
}

int main()
{
    auto t = make_tuple(3, 4.67, "Hello", true);
    myprint_impl(t);        //3, 4.67, Hello, 1

    system("pause");
    return 0;
}

 

posted on 2017-12-23 22:59  patton88  阅读(1097)  评论(0编辑  收藏  举报

导航