Допустим, я хочу обработать квадратные сетки размером N_DIMS
, каждый из которых имеет длину N_RES
элементов, что получается в N_ELEMS = std::pow(N_RES, N_DIMS)
элементах.
Реализация, которой я должен был следовать, является обобщением для неквадратных сеток
template<typename T, size_t... DIMS>
class MeshGrid
{
// ... etc etc
}
Например, возможный экземпляр с 3 размерами соответственно 4, 5, 6 элементов может быть
MeshGrid<float, 4, 5, 6> mg; // call A
Теперь мне нравится адаптировать его к чему-то вроде
template<typename T, size_t RES, size_t... DIMS>
class MeshSquare
{
// ... etc etc
}
Сохранение внутренней логики MeshGrid
1016 * для выполнения вызовов во время выполнения, таких как B
int res = 4, dims = 2
MeshSquare<float, res, ??dims??> // call B
Для примера квадратной сетки из 2-х измерений, каждый из 4 элементов = 16 элементов.
Я искренне подозреваю, что я хотел бы сделать; У меня такое чувство, что списки с вариадами должны обрабатываться во время компиляции; B вызов выше - чушь.
Если это когда-либо возможно, мой вопрос в том, как расширить dims
, чтобы соответствовать B call.