在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;
}
理想情况下,拥有一个函数能够返回任意维度内置数组的大小是非常有用的。我认为可变参数模板可以帮助实现,但我无法解压缩模板参数,因为只有一个参数被传递。这样的函数是否可能存在?
提前致谢。