// { dg-options "-std=gnu++0x" }
template<int... Indexes>
  struct _Index_tuple { };

template<int _Num, typename _Tuple = _Index_tuple<> >
struct _Build_index_tuple;

template<int _Num, int... _Indexes> 
struct _Build_index_tuple<_Num, _Index_tuple<_Indexes...> >
  : _Build_index_tuple<_Num - 1, 
                       _Index_tuple<_Indexes..., sizeof...(_Indexes)> >
{
};

template<int... _Indexes>
struct _Build_index_tuple<0, _Index_tuple<_Indexes...> >
{
  typedef _Index_tuple<_Indexes...> __type;
};
