В C ++ 11 можно создать функцию, которая возвращает размер (количество элементов) встроенного одномерного массива во время компиляции, используя constexpr. Пример ниже:
template <typename T, std::size_t N>
constexpr std::size_t size(T (&array)[N])
{
return N;
}
Это превосходная альтернатива ARRAY_SIZE и аналогичным макросам imo.
Однако это вернет только размер самого значительного измерения встроенного многомерного массива.
Я использую следующую функцию для определения размера встроенного двумерного массива:
template <typename T, std::size_t N, std::size_t N2>
constexpr std::size_t size(T (&array)[N][N2])
{
return N * N2;
}
В идеале было бы очень полезно иметь функцию, которая возвращает размер встроенного массива с произвольным числом измерений. Я думал, что шаблоны variadic могут помочь, но я не мог увидеть способ распаковки параметров шаблона, поскольку передается только один аргумент. Возможна ли такая функция?
Заранее спасибо.