это всё работало при компиль тайме.
Пробую написать что-то типа своего std::array.
Соответственно там функции constexpr. Как я понял, в constexpr нельзя использовать циклы. Как тогда перенести данные из initializer_list в сырой массив T myarr[size] ?
> Нельзя использовать циклы Можно, если C++14. В C++11 циклы заменяли на рекурсию
std::array использует единственный публичный член-массив и определения конструкторов вообще избегает
нет, не работает оно. constexpr _INLINE __xval_random(const str_type* str) : _x_val(random_char<K, str_type>::value) { for (int i = 0; i < N; ++i) calculated[i] = calc_single(str[i]); } N - константа, определённая в шаблоне. calc_single имеет такую сигнатуру: constexpr str_type calc_single(str_type) const; calculated - массив str_type calculated[N] Почему может не работать?
Стандарт-то какой?
ISO C++14 Standard (/std:c++14)
Загоняешь в годболт и смотришь, какой компилятор что скажет. Обычно по диагностикам видно, где сломалось
https://pastebin.com/5vCTBnp7
Обсуждают сегодня