C ++ 11では、constexprを使用して、コンパイル時に組み込みの1次元配列のサイズ(要素数)を返す関数を作成できます。以下の例:
template <typename T, std::size_t N>
constexpr std::size_t size(T (&array)[N])
{
return N;
}
これは、ARRAY_SIZEおよび同様のマクロimoの優れた代替手段です。
ただし、これは組み込みの多次元配列の最上位次元のサイズのみを返します。
組み込みの2次元配列のサイズを決定するために、次の関数を使用します。
template <typename T, std::size_t N, std::size_t N2>
constexpr std::size_t size(T (&array)[N][N2])
{
return N * N2;
}
理想的には、任意の次元数の組み込み配列のサイズを返す関数があると非常に便利です。可変個引数テンプレートが役立つと思いましたが、引数が1つしか渡されないため、テンプレートパラメーターを解凍する方法がわかりませんでした。そのような機能は可能ですか?
前もって感謝します。