Мне нужен постоянный массив констант, в котором его константы (элементы постоянного массива констант) могут использоваться там, где можно использовать только константу времени компиляции, например определения длины массива.
E.g:
int a[ my_const_array_of_const[0] ];
int b[ my_const_array_of_const[1] ];
template<int p>
foo() { ... };
foo< my_const_array_of_const[2] >();
Я пробовал решения из других ответов, но они не были достаточно «постоянными», чтобы компилятор не выдавал ошибку при их использовании в вышеуказанных ситуациях.
Как я могу создать константу my_const_array_of_const для компиляции в таких ситуациях?
Мне это нужно для настройки дизайна High-Level Synthesis (HLS). Синтаксис HLS C++ ограничен. Динамическая память не разрешена, поэтому мне нужно использовать статические массивы. Кроме того, все константы времени компиляции могут быть использованы для оптимизации работы аппаратного ускорителя (поэтому вместо переменных используются параметры шаблона).