C++14 実行時サイズの配列(コア言語版)

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されます。