在C++ 11中,可以创建一个函数,该函数在编译时使用constexpr返回内置一维数组的大小(元素数)。示例如下:使用可变参数模板函数的内置多维数组的大小
template <typename T, std::size_t N>
constexpr std::size_t size(T (&array)[N])
{
return N;
}
这是ARRAY_SIZE和类似宏的优越替代方法。
但是,这只会返回内置多维数组最重要维度的大小。
我使用下面的函数,用于确定的大小的内置二维阵列:
template <typename T, std::size_t N, std::size_t N2>
constexpr std::size_t size(T (&array)[N][N2])
{
return N * N2;
}
在理想情况下,这将是非常有用的,它返回的大小的功能的内置阵列具有任意数量的维度。我以为variadic模板可能会有所帮助,但我无法看到解压缩模板参数的方法,因为只有一个参数被传递。这样的功能可能吗?
在此先感谢。
三个工作答案好评,所有不同的:)。我认为KennyTM是最优雅的,所以我接受了他的答案,紧接着是Johannes's。 – Ricky65