如果我有一个具有不同元素类型的元组,例如
std::tuple<T0, T1, T2, ...>
以及如何获取元素类型的索引?
template<class T, class Tuple>
struct Index
{
enum {value = ?;}
};
Thanks.
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;
};
在 Coliru 观看现场直播 http://coliru.stacked-crooked.com/view?id=b8b6d4252c089262d3b80b6e0918f76c-c944ac6b0eed3bfc48b1f78a894f6965.
此实现返回给定类型第一次出现的索引。请求不在元组中的类型的索引会导致编译错误(而且是一个相当难看的错误)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)