本文介绍从Cpp11, Cpp14, Cpp20 打印tuple里边的每个元素的方式
代码如下:
#include <iostream>
#include <tuple>
template<size_t N>
struct DumpTupleCpp11Impl
{
template<typename T>
int operator()(T &tp)
{
DumpTupleCpp11Impl<N-1>{} (tp);
std::cout<<std::get<N-1>(tp)<<std::endl;
return 0;
}
};
template<>
struct DumpTupleCpp11Impl<1>
{
template<typename T>
void operator()(T &tp)
{
std::cout<<std::get<0>(tp)<<std::endl;
}
};
template<typename ...Args>
void DumpTupleCpp11(std::tuple<Args...> &tp)
{
DumpTupleCpp11Impl<sizeof...(Args)>{}(tp);
}
template<typename T, size_t...I>
void DumpImpl(T &tuple, std::index_sequence<I...> se)
{
int arr[] ={(std::cout<<std::get<I>(tuple)<<std::endl, 0)...};
}
template<typename ...Args>
void DumpTupleCpp14(std::tuple<Args...>&tuple)