トップページ > プログラム > 2016年10月09日 > gIk33Du70

書き込み順位&時間帯一覧

4 位/201 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000002013103000000010



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)
C++相談室 part127 [無断転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part127 [無断転載禁止]©2ch.net
203 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 10:33:17.77 ID:gIk33Du70
>>199
規格はどうあれclangでもgccでもVCでも使えるけどな実行時にサイズが決まる配列
C++相談室 part127 [無断転載禁止]©2ch.net
204 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 10:48:09.93 ID:gIk33Du70
「定数/定数がコンパイル時定数になるとは限らない」の規格的な根拠はここ

5.20 Constant expressions [expr.const]

[ Note: Constant expressions can be evaluated during translation.―end note ]

"can be"であって"must be"じゃないから
C++相談室 part127 [無断転載禁止]©2ch.net
210 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 12:43:19.01 ID:gIk33Du70
>>209
>「定数式が要求されない文脈では実行時評価しても良い」
は?
>配列サイズはコンパイル時ではないのか
そうだよ規格的には
clangとかgccは-pedanticオプションを指定すれば規格に沿ったチェックを行う
-pedantic付けないと可変長配列が使える

あと>>203に嘘を書いてしまったのを訂正する
VCのC++では可変長配列は使えないみたい
ICCでは使える(コンパイラをICCに切り替えていたのを忘れていた。。。)
C++相談室 part127 [無断転載禁止]©2ch.net
211 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 13:01:12.93 ID:gIk33Du70
>>208
5.19/2はcore constant expressionとなる条件を書いてるだけで
core constant expressionはコンパイル時評価しなくちゃいけないなんて書いてないと思うが???

>お前が「規格的」と称して引用した規格モドキ
規格に明確に書いていることをモドキ呼ばわりされてもねえ(笑)
C++相談室 part127 [無断転載禁止]©2ch.net
212 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 13:07:24.40 ID:gIk33Du70
ちょっと待てよ
俺が見てる規格のドラフト(n4296でもn4582でも)では5.19は「Comma operator」
であってconstant expressionに対する記述は5.20なんだが?
>>209はどれを見てるんだ???
C++相談室 part127 [無断転載禁止]©2ch.net
214 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 13:30:33.23 ID:gIk33Du70
N4141は持ってないし買う気もしないからN4140ダウンロードして見てみたら
5.19が「Constant expressions」だったわw

5.19/5にはこうあるんだよなあ

5 [ Note: Since this International Standard imposes no restrictions on the accuracy of floating-point operations,
it is unspecified whether the evaluation of a floating-point expression during translation yields the same
result as the evaluation of the same expression (or the same operations on the same values) during program
execution.87 [ Example:
bool f() {
char array[1 + int(1 + 0.2 - 0.1 - 0.1)]; // Must be evaluated during translation
int size = 1 + int(1 + 0.2 - 0.1 - 0.1); // May be evaluated at runtime
return sizeof(array) == size;
}
It is unspecified whether the value of f() will be true or false. ―end example ] ―end note ]

>>規格に明確に書いていることをモドキ呼ばわりされてもねえ(笑)
>そんなことを言ったところで、>>204で引用したものが規格ではないという事実に変わりはないぞ
Noteに書いてるものが規格じゃないとでも?じゃあ5.19/5は丸ごと規格じゃないな(笑)
C++相談室 part127 [無断転載禁止]©2ch.net
219 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 14:38:38.35 ID:gIk33Du70
>>215
まーた話をずらしてる
意味不明?もし本当にそう思うならあなたは規格から意味を汲み取れない人
215については俺も全部yesだよ
俺が言ったのは「定数/定数のような定数式の評価はコンパイル時定数になるとは限らない」だ
C++相談室 part127 [無断転載禁止]©2ch.net
226 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 16:10:17.82 ID:gIk33Du70
>>223
>もちろんこの発言が出た>>182,>>186は配列宣言の話なので、すり替えられても困るが
配列宣言に限った話じゃなかったんだが???
「限らない」も理解できないんじゃ話になりませんな
C++相談室 part127 [無断転載禁止]©2ch.net
227 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 16:21:59.70 ID:gIk33Du70
>>182は>>163に対するレスだが
ここに書いた
https://ideone.com/phgInn
の行16のsizeof array/sizeof array[0]はコンパイル時に評価されるとは限らないと言ってるのだが?

もっとも俺が知る限りの全てのコンパイラでこれはコンパイル時定数になるけどね
それ以外のコンパイラなんて見たこと無い
ただそれは規格では保証されていないということ
C++相談室 part127 [無断転載禁止]©2ch.net
230 :デフォルトの名無しさん (ワッチョイ 8b7b-yLuk)[sage]:2016/10/09(日) 16:44:53.69 ID:gIk33Du70
>>228
そうなのかなあ?規格をペダンティックに解釈するとそうなのかも知れないが
>>182のcountofのNを実行時に計算するコードとか想像もできない
sizeof array/sizeof array[0]の割り算を実行時にやるコードなら想像できる

ともあれ疲れてきたし、不毛だから俺はもうこの話題はいいよ
『プログラマは規格のみにて生くるにあらず』なのだから
この規格クソみたく読みづらいし


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。