私は次のようconstexprの機能を定義していますC++のconstexpr関数は実際に非定数式を引数として受け入れることができますか?
constexpr int foo(int i)
{
return i*2;
}
そして、これは主な機能には何です:
int main()
{
int i = 2;
cout << foo(i) << endl;
int arr[foo(i)];
for (int j = 0; j < foo(i); j++)
arr[j] = j;
for (int j = 0; j < foo(i); j++)
cout << arr[j] << " ";
cout << endl;
return 0;
}
プログラムは、コマンドの打ち鳴らすの++とOS X 10.8でコンパイルされました。コンパイラがfoo(i)の定数式ではないというエラーメッセージを出さず、実際にコンパイルされたプログラムがうまく動作することに驚きました。どうして?
'constexpr'手段」は定数を生成することができます式は、 "not"は定数式を生成する必要があります。 – Angew
@Angew配列次元はconstexprでなければいけませんか? –
@ God_of_Thunderはコンパイラの拡張機能です – Simple