#include <iostream>
#include <array>

using	uu =					std::size_t;

template< uu... ns >            struct  seq{};

template< uu from = 0 >
struct                          index_from
{
    template< uu n, uu... ns >  struct  end : end< n - 1, n - 1, ns... > {};
    template< uu... ns >        struct  end< from, ns... > : seq< ns... > {};
    template< uu last >         struct  to : end< last + 1 > {};
};

template< uu... ns >
constexpr	auto                make_index_array( seq< ns... > )
{
    return  std::array< uu, sizeof...( ns ) > { { ns... } };
}

using   namespace   std;

int main()
{
	auto	arr = make_index_array( index_from< 10 >::to< 15 >{} );
	for( const auto v : arr )
		cout << v << endl;
		
	return 0;
}