私は要素型のインデックスを取得するタプル要素の型のインデックスを取得しますか?
std::tuple<T0, T1, T2, ...>
そして、どのようなさまざまな要素型を持つタプルを持っている場合は?
template<class T, class Tuple>
struct Index
{
enum {value = ?;}
};
ありがとうございます。
私は要素型のインデックスを取得するタプル要素の型のインデックスを取得しますか?
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;
};
この実装は、指定された型の最初のオカレンスのインデックスを返します。タプルにない型のインデックスを要求すると、コンパイルエラーが発生します(それはかなり醜いものです)。
型が要素型の中にない場合、どのような振る舞いですか? – user1899020
@ user1899020 [コンパイル時エラー。](http://coliru.stacked-crooked.com/view?id=00d44c11b2bfb4ce09cd43c8bfe57739-c944ac6b0eed3bfc48b1f78a894f6965) – Casey
私は 'std :: cout <<"インデックス
'std :: tuple'があり、 'int'を要求するとどうなりますか?また、なぜこれが必要ですか? –
Borgleader
タプルの要素タイプが異なると仮定します。そのような前提がない場合は、いずれか1つの試合がうまくいく。与えられた基本クラスの派生クラスタプルによって、効率的な抽象ファクトリを実装するために使用します。 – user1899020
特定の環境、あるいは一般的なC++だけを探していますか? – css