C++
1struct S{ 2 array<int, 1000> vals; 3 constexpr S(int _val) :vals({_val}) {} 4}; 5 6struct T{ 7 int val; 8 static constexpr S stk = S(100); 9 // static const S stk = S(100); 10 T(int i) :val(stk.vals[i]) {} 11 void set(int i) { val = stk.vals[i]; } 12};
上のコードについて、static const S stk = S(100);
が利用できないのは分かるのですが、static constexpr S stk = S(100);
を使ってもエラーにならない理由がわかりませんでした。
static constexpr S stk = S(100);
は実行時に存在しますか?T::stk
は 2 箇所で使われていますが、2箇所にarray<int, 1000> vals
が生成されるのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/27 04:42