c++ - 获取元组元素类型的索引?

标签 c++ templates tuples

如果我有一个包含不同元素类型的元组,例如

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;
};

See it live at Coliru .

此实现返回给定类型第一次出现的索引。请求不在元组中的类型的索引会导致编译错误(而且是一个相当难看的错误)。

关于c++ - 获取元组元素类型的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18063451/

相关文章:

c++ - 将多个数组转换为元组

c++ - 默认多个参数

c++ - 具有可变参数类型的模板多重可变继承

java - 来自 http 调用和表单的 Meteor 动态模板

c++ - SFINAE 有选择地纳入成员(member)

c++ - std::tie 与 std::make_tuple

c++ - 最短路径加权矩阵

c++ - 模板化赋值运算符问题

c++ - 模板类中的变量模板 - 意外错误(可能的错误?)

python - 只选择字典键是元组?