10

constconstexprが配列で使用される場合に違いがあるのはなぜですか?

int const xs[]{1, 2, 3};
constexpr int ys[]{1, 2, 3};

int as[xs[0]];  // error.
int bs[ys[0]];  // fine.

xs[0]と の両方が定数式であると予想ys[0]しますが、定数式として扱われるのは後者だけです。

4

2 に答える 2

0

C++11は、キーワードconstexprとは異なり、コンパイル時に式を評価できるようにするために使用されます。const

constexpr int ys[]{1, 2, 3};コンパイル時に評価されるため、エラーは発生しません

いつys[0]使用されます。

また、ここでは C++11 の均一な初期化が使用されていることに注意してください。{}

その他の例:

constexpr int multipletwo(int x)
{
return 2*x;
}

int num_array[multipletwo(3)]; //No error since C++11, num_array has 6 elements.
于 2013-08-09T11:24:30.357 に答える