在 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;
}
理想情况下,拥有一个返回具有任意维数的内置数组大小的函数会非常有用。我认为可变参数模板可能会有所帮助,但由于只传递了一个参数,因此我看不到解包模板参数的方法。这样的功能可能吗?
提前致谢。