C++相談室 part164

レス数が1000を超えています。これ以上書き込みはできません。
2023/05/09(火) 11:50:52.06ID:EYc2I7oW0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
C++相談室 part163
https://mevius.5ch.net/test/read.cgi/tech/1672409791/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/10/30(月) 16:45:14.84ID:I7fISnX+0
>>963
一般論としてはそのほうが分かりやすくなるからというだけのことだと思うよ。

ただ、それで分かりやすくならないとき、
チマチマした条件チェックであっちこっち行くよりは
流れをぶった切って goto したほうがいっそわかりやすいこともあるってのが
goto が必要な場面ってことなんだわ。
2023/10/30(月) 17:14:03.48ID:hnsSyQft0
>>967
と言いますと?
2023/10/30(月) 17:24:30.69ID:9eqG7NVC0
ラムダ式にする
2023/10/30(月) 17:57:47.45ID:eEth4IuV0
>>968
自分としては多重ループ脱出がC++でのgotoの唯一の実用的な用途だと思ってる(とはいえめったに使わない)
Cなら疑似finally的な後処理に使うこともあるけど、それはC++ならRAIIにすべきだしな
それ以外の戻ったり余所のスコープに侵入したりはもちろんCでもC++でも論外
2023/10/30(月) 18:39:22.51ID:VfsLhOLn0
何度も繰り返すgotoの話になると人が湧くな
2023/10/30(月) 18:54:25.65ID:A0jdf3Dt0
>>970
VSのデバッガは例外投げられるとメッセージでる(設定変えればオフにはできる)
また設定によってはブレイクする
正常処理のくせに頻繁に例外投げられると非常にうざいし、本当の異常を見過ごす
975デフォルトの名無しさん (ワッチョイ 5101-CP9B)
垢版 |
2023/10/30(月) 19:04:07.11ID:qWSrxYwr0
switchとgoto組み合わせて状態機械作ってる
2023/10/30(月) 19:54:14.15ID:A0jdf3Dt0
gcc拡張のlabelのアドレスとれるやつとかな
昔はイキって使ってたわ
2023/10/30(月) 20:16:27.75ID:hnsSyQft0
>>974
そりゃうざいデフォルト設定だな
ループの脱出に限らず例外くらい普通に使うやろ?
ちゃんと切っとけ
2023/10/30(月) 20:43:41.27ID:A0jdf3Dt0
>>977
例外が起こったときは何かおかしいことが起こっている予兆と考える防御的なVSをおれは支持する
だいたい例外安全って何それ?ってレベルのやつも多いだろ
例外で遊ぶのは趣味のときだけにしとけ
2023/10/30(月) 20:48:14.67ID:JbGfWzUOM
ループ脱出レベルで例外を使うのは変だと感じる
関数抜けないのに例外なんて…
2023/10/30(月) 20:54:46.61ID:JbGfWzUOM
んで大昔に例外に似た機能のFound文Match文とか妄想してたんだな

実質タダのgoto文
2023/10/30(月) 20:54:46.86ID:hnsSyQft0
>>978
ループに限らず孫関数ひ孫関数からエラーで脱出するときどうしてんの?
例外使わんか?
2023/10/30(月) 20:57:56.27ID:JbGfWzUOM
例外は通常動作として起こらないような動作で起こすもので
何か探すループなんかで実際に対象が見つかったとしてそれは「例外」なのか?
ちがうだろー
2023/10/30(月) 20:58:12.43ID:hnsSyQft0
>>979
俺はgotoは全く書かないな
パフォーマンス的にはgotoの方が良いかな?
2023/10/30(月) 20:59:51.11ID:hnsSyQft0
>>982
実にくだらない理由だと思う
2023/10/30(月) 21:01:36.17ID:JbGfWzUOM
>>984
それが一般的な解釈でおかしな使い方をしてる人間は影で笑われている
2023/10/30(月) 21:06:32.49ID:hnsSyQft0
>>985
人格を攻撃するような書き込みはやめようね
2023/10/30(月) 21:07:29.46ID:JbGfWzUOM
例外はパフォーマンス的に重いしそれ以前に
正常系の出力を異常系で投げるのはおかしい

まったくもって異常
2023/10/30(月) 21:08:57.30ID:eEth4IuV0
よその言語ではイテレータの終了通知に例外使ってたりするから人格否定するほどの話ではない
C++の慣用としてやられてないし向いてないってだけ
2023/10/30(月) 21:09:03.25ID:JbGfWzUOM
>>986
人格自体は攻撃してないだろ
事実
2023/10/30(月) 21:12:55.48ID:hnsSyQft0
>>987
>正常系の出力を異常系で投げるのはおかしい
これを書いたのはあなたで私ではないよ
2023/10/30(月) 21:14:51.99ID:hnsSyQft0
>>989
>>987の「例外はパフォーマンス的に重いし」のような議論は分かるが
>>985は人格を攻撃している書き込み
気をつけ給え
2023/10/30(月) 21:19:13.29ID:A0jdf3Dt0
>>981
エラーならありだがtry catch書かされるのもだるいだろ
現実的に例外投げる場合はそのまま終了か、フルリブートするしかないときって考えたほうがいい
2023/10/30(月) 21:19:21.17ID:JbGfWzUOM
非常に大切で根本的な理由と例を挙げたのに「実にくだらない理由」としか取られないのが残念
例外はただの制御構文ではない
2023/10/30(月) 21:20:50.60ID:JbGfWzUOM
>>991
実にくだらない理由か本当に?
理解不足だと思うけど
2023/10/30(月) 21:22:28.46ID:J+/7yoK80
凶悪といえばAnsiCのsetjmp()とlongjmp()
あれらを規格に入れてるのはキチガイとしか
2023/10/30(月) 21:25:34.77ID:hnsSyQft0
>>993,994
そう思う

>>982
>例外は通常動作として起こらないような動作で起こすもので
これは今行っている議論の対象である

>何か探すループなんかで実際に対象が見つかったとしてそれは「例外」なのか?
何に使うかの理由に名称を持ち出すのは
私はくだらないと考えている
2023/10/30(月) 21:28:39.53ID:JbGfWzUOM
>>996
概念だろ
それが一番大切で実装の基本だろ

C++自体の仕様が変わるとしても例外と言う概念に沿って変わることになるはずだ
今適当にマッチを投げていて仕様がより例外側に代わってその時その使い方は生き残れるのだろうか?
2023/10/30(月) 21:31:50.44ID:hnsSyQft0
>>997
templateメタプログラミングとか許せない人ですか?
2023/10/31(火) 06:57:27.99ID:BIE3G76Q0
Core Guideline にも例外はエラー処理だけに使えとある.
多重ループからの脱出が本当にエラー処理なの?
2023/10/31(火) 07:21:48.58ID:1/1CCAX60
質問いいっすか?
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 174日 19時間 30分 57秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。