constexpr
ディメンションを使用せずに組み込み配列を宣言できることをどのように可能にするかを考え出すのに問題があります。つまり、次のブロックは私にとって完璧に機能します。コンパイル時に指定されなければならない固定サイズの配列が、constexpr
のサイズ定義を使って定義されていることは分かっていました。constexprのサイズを持たない組み込み配列の初期化
int size;
int arr[size];
constexpr
ディメンションを使用せずに組み込み配列を宣言できることをどのように可能にするかを考え出すのに問題があります。つまり、次のブロックは私にとって完璧に機能します。コンパイル時に指定されなければならない固定サイズの配列が、constexpr
のサイズ定義を使って定義されていることは分かっていました。constexprのサイズを持たない組み込み配列の初期化
int size;
int arr[size];
必ずしもconstexpr
である必要はありません。これは、C++ 11から導入されたものです。
あなたは、単純な数
int arr[12];
または定数
int const size = 7;
int arr[size];
またはCスタイル
#DEFINE size 5
int arr[size];
マクロを通じてサイズを割り当てることができますが、あなたは正しいです。次のコード
int size = 11;
int arr[size];
が正しくありません。C++。
しかし、私はよく覚えていればCの一部のバージョンでは合法ですが、C++コンパイラも通常はCコンパイラです。したがって、通常許容的です。
特定のオプションでコンパイルして、言語に関する厳密なチェックを行うことができます。例によって、++ g ++および打ち鳴らすと、私は-ansi -pedantic
を使用する。また、サイズn
の配列をこのように初期化することが可能である:
int n = 123;
int* a;
a = new int[n];
非常に感謝しながら、-ansi、私は、今から-pedantic使用します何らかの理由で動作しない –