Witam
Poniższy kod się kompiluje dla kompilatora obsługującego C++14. Jeżeli zamienię linijkę z "i" na "tab[i] = i" to wtedy przestaje się kompilować. Jeżeli usunę constexpr to oczywiście też się kompiluje. Jeżeli owrapuję std:array w jakąś strukturę która ma konstruktor constexpr i przyjmuje parametr array to też dalej się wywala na "tab[i]". Czy da radę coś tu poprawić by móc generować tablice o rozmiarze N w czasie kompilacji?
#include <iostream>
#include <array>
using namespace std;
template<unsigned N>
constexpr array<unsigned, N> zwrocArray()
{
array<unsigned, N> tab{ 0 };
for (unsigned i = 0; i<N; ++i)
i; //tab[i] = i; //kompiluje się, ale jak dam tab[i] = i to już nie kompiluje się czyli nie działa wywoływanie zwrocArray w czasie kompilacji.
return tab;
}
int main()
{
constexpr array<unsigned, 30> tab = zwrocArray<30>();
return 0;
}