I want to initialize an array with a sequence of int
s from 0
to N - 1
#include <array>
#include <iostream>
template<unsigned N>
struct XArray
{
static constexpr int array[N] = {XArray<N - 1>::array, N - 1};
};
template<>
struct XArray<1>
{
static constexpr int array[1] = {0};
};
int main(void)
{
std::array<int, 10> const a{XArray<10>::array};
for (int const & i : a)
std::cout << i << "
";
return 0;
}
I tried that, but it does not work, since XArray<N - 1>::array
in my struct must be int
, and not int *
. How can I do this ? How to "concatenate" the values ?