проблема в том что operator[] у std::array не constexpr. Каки есть другие способы реализации? Я могу раскрыть цикл или написать через рекурсию, но как то не очень
constexpr std::array<int, 8> to_dim_vec(const int dim) noexcept
{
constexpr std::array<int, 8> dimsizes = {20, 20, 20, 10, 10, 10, 10, 10};
constexpr int dimbias = 444444210;
std::array<int, 8> out = {};
int m = dim + dimbias;
for (size_t i = 0; i < dimsizes.size(); ++i) {
int sz = dimsizes[i];
int mm = m / sz;
out[i] = (m - mm * sz) - sz / 2;
m = mm;
}
return out;
}
А ranged based for разве не решит эту проблему?
Имена переменных конечно так себе
for (auto sz : dimsizes) {
Чтобы этот кусок кода заработал, надо вместо типа auto подставить
Обсуждают сегодня