N3639 Runtime-sized arrays with automatic storage duration (revision 5)
以前、「C++1y 動的配列クラスの提案」というエントリで、std::dynarray
クラスが提案されていることを紹介しましたが、ライブラリ側だけでなく、組み込み配列の拡張としての動的配列も考えられています。そしてこの両方が、C++14に含める予定で進められています。
コア言語版の方は、見た目はC99のものと同じで、組み込み配列の定義時に実行時の要素数を指定します。
void f(int n) { int ar[n]; }
C99とは異なり、実行時サイズの配列は、sizeof
をとることはできません。
配列の領域確保にスタックが使われるかどうかは、規定されません。要素数に0以下が指定されたり、実装定義の限界要素数を超えたりする場合は、std::bad_array_length
という新しい例外クラスのオブジェクトがthrow
されます。