在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