C++11提供了tuple_element可以通过索引获取其索引位置上的类型
tuple_element<N, T>::type
并且定义了便捷版本:
template <std::size_t I, class T>
using tuple_element_t = typename tuple_element<I, T>::type;
#include <iostream>
#include <string>
#include <tuple>
using namespace std;
template <typename T> void printHelper() { cout << "unknown type\n"; }
template <> void printHelper<int>() { cout << "int\n"; }
template <> void printHelper<double>() { cout << "double\n"; }
template <> void printHelper<string>() { cout << "string\n"; }
int