ドラフト C++14 には、実行時サイズの配列とstd::dynarray
コンテナーの両方が含まれています。私が知る限り、この 2 つの違いは、ランタイム サイズの配列にはありませんが、STL インターフェイス (たとえば、、、、など) があることだけstd::dynarray
ですbegin
。では、なぜ C++14 は両方を必要とするのでしょうか?end
size
実行時サイズの配列はコア言語のstd::dynarray
一部であり、標準ライブラリの一部であることは理解していますが、 の提案はstd::dynarray
、多くの場合、コンパイラがstd::dynarray
効率的になるように特別なサポートを提供することを著者が期待していることを明確にしています。つまり、実行時サイズの配列と同じくらい効率的です。そのため、言語とライブラリの区別はやや不自然に思えます。
繰り返しになりますが、なぜ C++14 は実行時サイズの配列と の両方を必要とするのstd::dynarray
でしょうか? よりリッチな (STL 化された) インターフェースを備えていることを考えると、同等のランタイム効率で実装できるとstd::dynarray
仮定して、なぜランタイム サイズの配列をドロップしないのでしょうか?std::dynarray
明確化
「ランタイム サイズの配列」について話すとき、N3639で説明されている新しい C++14 コア言語機能について言及していて、従来の C 配列や VLA、または C++11 の何かについて言及しているのではありません。