chcę zainicjować tablicę z sekwencji int
s od 0
do N - 1
sekwencji inicjalizacji tablicy z szablonem
#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 << "\n";
return 0;
}
próbowałem, ale to nie działa, ponieważ XArray<N - 1>::array
w moim struktury muszą być int
, a nie int *
. Jak mogę to zrobić ? Jak "połączyć" wartości?
To nie jest takie proste. W języku brakuje funkcji "wycenianych w paczce". Pojawiły się (na wpół żartujące) propozycje, które pozwoliły w pewnym momencie przeciążyć 'operatora ...' w tym celu, ale w tej chwili nic nie istnieje w tym języku. (Np. Co chcesz to 'int array [N] = {unpack() ...};', gdzie 'unpack' ma przeciążony' operator ... '.) –
@KerrekSB Ow ...: (Nie ma sposobu, aby to zrobić, więc? – Boiethios
Mam tylko jedno słowo: dlaczego –