Я пытаюсь написать вспомогательную функцию, которая преобразует два массива в массив пар, который используется для инициализации некоторых статических данных, хранящихся в моей программе.
Пока что я написал constexprфункция, которая принимает два массива одинаковой длины и возвращает std::array
по значению, которое затем используется для инициализации массива.
inline std::array<param_t, N> transpose(int const (&mg)[N], int const (&eg)[N]) {
std::array<param_t, N> ret{};
for(size_t i = 0; i < N; i++) {
ret[i] = {mg[i], eg[i]};
}
return ret;
}
struct some_params {
param_t mat[5] = transpose({92, 367, 444, 583, 1342}, {88, 370, 394, 646, 1233});
}
Это приводит к ошибке компилятора: Array initializer must be an initializer list
. Я не уверен, как я могу вернуть std::initializer_list
, учитывая, что он не имеет подходящего конструктора и разработан как временный. По разным причинам я не могу изменить тип мата на std::array
.
Как я могу инициализировать подобный массив из функции?