如果我有一个包含不同元素类型的元组,例如
std::tuple<T0, T1, T2, ...>
如何获取元素类型的索引?
template<class T, class Tuple>
struct Index
{
enum {value = ?;}
};
谢谢。
最佳答案
template <class T, class Tuple>
struct Index;
template <class T, class... Types>
struct Index<T, std::tuple<T, Types...>> {
static const std::size_t value = 0;
};
template <class T, class U, class... Types>
struct Index<T, std::tuple<U, Types...>> {
static const std::size_t value = 1 + Index<T, std::tuple<Types...>>::value;
};
此实现返回给定类型第一次出现的索引。请求不在元组中的类型的索引会导致编译错误(而且是一个相当难看的错误)。
关于c++ - 获取元组元素类型的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18063451/