C++組み込みの固定長配列では、初期化リストで初期化する場合に要素数の記述を省略することができます。
|
この仕様の嬉しい点の1つに、ある定数値と同じ数だけ配列の要素を確保する場合に、コンパイル時アサートによる記述漏れチェックができるということが挙げられます。
|
もしどこかのヘッダで定義されている ReqCount
の値が変更された場合、 static_assert
によってコンパイルエラーが発生します。
これにより、「要素数の定義を変えたけど、それに依存する配列を書き換え忘れた」というミスをコンパイル時に検出することができます。
固定長配列の要素数を得る constexpr
関数を定義しておくと尚良いでしょう。*1
|
|
今回の本題はここまでです。
ところで、C++11では組み込み配列のラッパクラスとして std::array
が用意されています。
|
固定長配列を std::vector
等のコンテナと似た感じで扱える上にオーバヘッドもほぼ無い便利なクラスなのですが、こちらは要素数を必ず指定する必要があります。
上記コード中の std::array<int, 5>
を std::array<int>
のように省略することはできません。(クラステンプレートの仕様上、当然の話ですが。)
std::array
を使いつつ、組み込み配列のように要素数の変更をコンパイル時検出するには…?
これについては調査中なので次回の記事で。