8

私はずっと、可変長配列は c++ では許可されていないと考えていました (Refer : Why are not variable-length arrays part of the C++ standard? ) .しかし、なぜこのコードはコンパイルされて動作するのでしょうか?

#include <iostream>
using namespace std;

int main () {

    int n;
    cin >> n;

    int a[n];

    for (int i=0; i<n; i++) {
        a[i] = i;
    }

    for (int i=0; i<n; i++) {
        cout << a[i] << endl;
    }
}
4

2 に答える 2

7

現在の C++ 標準では、コンパイラが VLA をサポートする必要はありません。ただし、コンパイラ ベンダーは、拡張機能として VLA をサポートすることが許可されています。たとえば、GCC >= 4.7 はそうです。

VLA が C++14 に登場することが最初に提案されましたが、提案は成功しませんでした。また、最終的には、C++17 には表示されませんでした。

于 2014-02-25T12:00:16.050 に答える