﻿ 优雅地定义现代C中的多维阵列 - 代码日志

#### 优雅地定义现代C中的多维阵列

template <typename T, std::size_t n, std::size_t... ns>
struct multi_array {
using type = std::array<typename multi_array<T, ns...>::type, n>;
};

template <typename T, std::size_t n>
struct multi_array<T, n> {
using type = std::array<T, n>;
};

template <typename T, std::size_t... ns>
using multi_array_t = typename multi_array<T, ns...>::type;

template <class T, std::size_t I, std::size_t... J>
struct MultiDimArray
{
using Nested = typename MultiDimArray<T, J...>::type;
// typedef typename MultiDimArray<T, J...>::type Nested;
using type = std::array<Nested, I>;
// typedef std::array<Nested, I> type;
};

template <class T, std::size_t I>
struct MultiDimArray<T, I>
{
using type = std::array<T, I>;
// typedef std::array<T, I> type;
};

MultiDimArray<float, 3, 4, 5, 6, 7>::type floats;

MultiDimArray是一对用于计算多维std :: array的嵌套类型的元函数。最通用的MultiDimArray是用于传递任意数量维的无符号整数的可变模板。终止的MultiDimArray专业化定义了单维std :: array的最简单的例子。

http://stackoverflow.com/questions/35008089/elegantly-define-multi-dimensional-array-in-modern-c