次のようなさまざまな要素タイプのタプルがある場合
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;
};
この実装は、特定の型が最初に出現したインデックスを返します。タプルに含まれていない型のインデックスを要求すると、コンパイル エラーが発生します (かなり見苦しいものです)。