!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part164
https://mevius.5ch.net/test/read.cgi/tech/1683600652/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C++相談室 part165
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ efda-9b8G)
2023/10/31(火) 07:37:38.52ID:+ZyYyqMO0283デフォルトの名無しさん (ワッチョイ 1e85-XyAm)
2024/02/17(土) 23:18:00.46ID:v62CV0mD0 >>278
> そもそも致命的な例外でアプリケーション自身の継続が困難な場合を除いて
> どんな例外でもあっても継続的な処理を可能にするのが例外処理だろうに
それは幻想
c++の例外安全の達成がどれだけ難しいか理解していないね
簡単にリークするし、オブジェクトが想定外の状態を持ったりする
動作保証ができない
だから仕様に明示されていない例外が来たら基本は終了だよ
そのまま継続してそれが原因でその後別の場所で落ちられたら無駄な調査の手間が増えるだけ
> そもそも致命的な例外でアプリケーション自身の継続が困難な場合を除いて
> どんな例外でもあっても継続的な処理を可能にするのが例外処理だろうに
それは幻想
c++の例外安全の達成がどれだけ難しいか理解していないね
簡単にリークするし、オブジェクトが想定外の状態を持ったりする
動作保証ができない
だから仕様に明示されていない例外が来たら基本は終了だよ
そのまま継続してそれが原因でその後別の場所で落ちられたら無駄な調査の手間が増えるだけ
284デフォルトの名無しさん (ワッチョイ 16cf-BOeC)
2024/02/17(土) 23:48:07.59ID:QSMcEn770 例外安全と例外の種類には特に関係はないわけで、知らない例外だと例外安全の保証が困難になるなんてこともない。
285デフォルトの名無しさん (ワッチョイ 6fbc-ERL4)
2024/02/18(日) 00:24:49.13ID:JX7gxI3D0286デフォルトの名無しさん (ワッチョイ ffe0-UH2C)
2024/02/18(日) 09:00:09.02ID:c1Urupub0287デフォルトの名無しさん (ワッチョイ e3f9-NGC7)
2024/02/18(日) 09:39:44.00ID:9f8IS57r0 ぶっちゃけ>>283がなに言ってるのかわからない
継続してそれが原因で?
いやいやw
突如落ちるより、保存できるデータは保存してもらう機会を与えることは出来るだろ
なんでお前は何事もなかったかのように作業を続ける前提でしか話を聞かないんだ?
オブジェクトの状態が変わっているかも?
変更前のデータと比較して変わっていたらユーザに確認すればいいだろ
例えば図形情報のうちTopの読み込みで例外が発生した場合に想定してないからとアプリ落として全情報ロストさせる気か?
Topは0で初期化させ読み込めなかったことをユーザに伝えて修正、もしくは再読み込みの機会を与えるだけの話だろ
継続してそれが原因で?
いやいやw
突如落ちるより、保存できるデータは保存してもらう機会を与えることは出来るだろ
なんでお前は何事もなかったかのように作業を続ける前提でしか話を聞かないんだ?
オブジェクトの状態が変わっているかも?
変更前のデータと比較して変わっていたらユーザに確認すればいいだろ
例えば図形情報のうちTopの読み込みで例外が発生した場合に想定してないからとアプリ落として全情報ロストさせる気か?
Topは0で初期化させ読み込めなかったことをユーザに伝えて修正、もしくは再読み込みの機会を与えるだけの話だろ
288デフォルトの名無しさん (ワッチョイ cfcf-sYtR)
2024/02/18(日) 09:41:50.12ID:WHoJTRhT0289デフォルトの名無しさん (ワッチョイ e3f9-NGC7)
2024/02/18(日) 12:27:32.99ID:9f8IS57r0 > これはどういう意味なんだろうな。
そうそれ
tryブロックで囲った部分(つまり任意)の例外発生に対応するのが例外処理なのになにが出来ないというのか
想定している例外が発生して継続できると判断したなら続ければいいし
ダメならユーザに通知してもちょも安全な方法を選択させればいい
でもってそれは想定していない例外の発生でも同じ
ただ致命的でどうしようもないなら強制終了させるだけの話で、想定していない例外はなんでもかんでも強制終了じゃ例外処理使う意味が薄まってしまう
そうそれ
tryブロックで囲った部分(つまり任意)の例外発生に対応するのが例外処理なのになにが出来ないというのか
想定している例外が発生して継続できると判断したなら続ければいいし
ダメならユーザに通知してもちょも安全な方法を選択させればいい
でもってそれは想定していない例外の発生でも同じ
ただ致命的でどうしようもないなら強制終了させるだけの話で、想定していない例外はなんでもかんでも強制終了じゃ例外処理使う意味が薄まってしまう
290デフォルトの名無しさん (ワッチョイ e3f9-NGC7)
2024/02/18(日) 12:28:39.34ID:9f8IS57r0 もちょも は もっとも の まちがい
291デフォルトの名無しさん (ワッチョイ 6f5b-ERL4)
2024/02/18(日) 13:22:22.19ID:JX7gxI3D0 >>287
ファイル保存するなとか言ってない
それぐらい終了処理のひとつだろ
ログファイルもシグナルトラップして必ずフラッシュさせるのが常套手段だろ
意味不明な例外が発生しました
データが破損してないかあなたが確認してください
動作無保証ですが処理継続しますか?yes/no
こんなUIだすやつセンスの欠片もない
ファイル保存するなとか言ってない
それぐらい終了処理のひとつだろ
ログファイルもシグナルトラップして必ずフラッシュさせるのが常套手段だろ
意味不明な例外が発生しました
データが破損してないかあなたが確認してください
動作無保証ですが処理継続しますか?yes/no
こんなUIだすやつセンスの欠片もない
292デフォルトの名無しさん (ワッチョイ e304-hmqi)
2024/02/18(日) 14:01:41.78ID:6Yt/CDIt0 私が20代の頃に見かけた論争が今も繰り返されてるのかわいい🩷
293デフォルトの名無しさん (ワッチョイ ffad-mJpf)
2024/02/18(日) 15:55:07.22ID:1iQutSwY0294デフォルトの名無しさん (ワッチョイ cfcf-sYtR)
2024/02/18(日) 16:26:47.97ID:WHoJTRhT0 >>291
まさか、何も言わずにいきなり落とす方が良いとか言うわけじゃあるまい。
まさか、何も言わずにいきなり落とす方が良いとか言うわけじゃあるまい。
295デフォルトの名無しさん (スッップ Sd1f-p9fr)
2024/02/18(日) 17:54:38.27ID:L2mk1x1ad >>289
もちょカワイイよね
もちょカワイイよね
296デフォルトの名無しさん (ワッチョイ bf9a-/DPD)
2024/02/18(日) 18:17:37.55ID:LeQ06zof0 >>280
実生活のあれと似てますよね。「引っ越すことになりました。新住所はXXです」と早めに
連絡したら、気の早い知人がそこに押しかけてきて「なんやまだ引越しとらんやんけ」となる
やはり引越し作業完了を待ってからの方がいいのか。ってちがうか
実生活のあれと似てますよね。「引っ越すことになりました。新住所はXXです」と早めに
連絡したら、気の早い知人がそこに押しかけてきて「なんやまだ引越しとらんやんけ」となる
やはり引越し作業完了を待ってからの方がいいのか。ってちがうか
297デフォルトの名無しさん (ワッチョイ 1b63-9XlH)
2024/03/02(土) 23:41:07.84ID:C77pR/Zl0 >>282
>相変わらずずれてるな。 catch する == 原因を調査しない じゃないわけ
>249に賛同いただけていないということは、発生してもいない例外について予防的にtry { } catch () を入れようとしていることは
確定的に明らか
で、例外というブツは「例外なく」悪い知らせなので(∵仮に良い知らせを例外で寄越すライブラリがあったらそれ自体悪い知らせである
普通の人は悪い知らせが来る前に処置しようとする。すわなち例外が来ないように(可能な限り)修正する。
try { } catch ( ) でひっかけて原因調査兼確実な修正でざい、それが一番効率が良い方法論である、などと主張するのはおかしい人だけ……
>相変わらずずれてるな。 catch する == 原因を調査しない じゃないわけ
>249に賛同いただけていないということは、発生してもいない例外について予防的にtry { } catch () を入れようとしていることは
確定的に明らか
で、例外というブツは「例外なく」悪い知らせなので(∵仮に良い知らせを例外で寄越すライブラリがあったらそれ自体悪い知らせである
普通の人は悪い知らせが来る前に処置しようとする。すわなち例外が来ないように(可能な限り)修正する。
try { } catch ( ) でひっかけて原因調査兼確実な修正でざい、それが一番効率が良い方法論である、などと主張するのはおかしい人だけ……
298デフォルトの名無しさん (ワッチョイ 1b63-9XlH)
2024/03/02(土) 23:49:37.41ID:C77pR/Zl0 >>284
例外安全というもののスコープに対して考察が足りていない
1.
例外安全なオブジェクト foo のデストラクトが他の例外によって引き起こされるケースでは
foo の安全な終了は(メモリかファイルステムか何かが物理的にぶち壊れてOSがパニックになったとかでない限り
ほぼほぼ保たれるから>>284のような言い方はできるっていやーできるが、
システム全体については>>283の通りであって全然安全ではない
2.
fooの中の例外処理が本当に完璧かはfooのコードに書かれている全てのtry { } catch () について
全ての例外発生条件についてテストか厳格めのコードレビューでも行わないことには安全性が担保されない。
(つまり例外安全にした実装したと主張するだけでは話がただちには簡単にはならない
例外安全というもののスコープに対して考察が足りていない
1.
例外安全なオブジェクト foo のデストラクトが他の例外によって引き起こされるケースでは
foo の安全な終了は(メモリかファイルステムか何かが物理的にぶち壊れてOSがパニックになったとかでない限り
ほぼほぼ保たれるから>>284のような言い方はできるっていやーできるが、
システム全体については>>283の通りであって全然安全ではない
2.
fooの中の例外処理が本当に完璧かはfooのコードに書かれている全てのtry { } catch () について
全ての例外発生条件についてテストか厳格めのコードレビューでも行わないことには安全性が担保されない。
(つまり例外安全にした実装したと主張するだけでは話がただちには簡単にはならない
299デフォルトの名無しさん (ワッチョイ 1b63-9XlH)
2024/03/02(土) 23:57:46.67ID:C77pR/Zl0 それはそうとして、予防的なtry{ } catch () の何が一番駄目かというと、設計上のトレードオフをわけわかんなくすることが確実な点
例外発生後の状況というのはたいてい>>283の通りのわけなので、何かを捨てて何かを取る
(例えばシステムは最悪落ちても構わないが、例外安全なオブジェクトfooでリソースAの整合性は死守する等)
のトレードオフが発生するがそういうのこそ慎重な設計と考慮が必要な事項であることは確定的にあきらか
プログラムの全階層にtry { } catch ()入れたら完璧などというアフォはやっぱtry { } catch () しないのが正しい
例外発生後の状況というのはたいてい>>283の通りのわけなので、何かを捨てて何かを取る
(例えばシステムは最悪落ちても構わないが、例外安全なオブジェクトfooでリソースAの整合性は死守する等)
のトレードオフが発生するがそういうのこそ慎重な設計と考慮が必要な事項であることは確定的にあきらか
プログラムの全階層にtry { } catch ()入れたら完璧などというアフォはやっぱtry { } catch () しないのが正しい
300デフォルトの名無しさん (ワッチョイ 0fcf-0WZ8)
2024/03/03(日) 21:57:15.41ID:735dldsp0 >>298
自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかをごっちゃにしてるだろ。
しかも、呼び出す関数からドキュメント化されていない想定外の例外が発生するなら例外安全に作られていないだろうという
変な決めつけが混じってる。
例外安全なコードは例外の種類に依存しない。知ってる冷害に対しては安全だけど知らない例外が飛んできたら安全じゃない
なんてのはそもそも例外安全とは言わない。
自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかをごっちゃにしてるだろ。
しかも、呼び出す関数からドキュメント化されていない想定外の例外が発生するなら例外安全に作られていないだろうという
変な決めつけが混じってる。
例外安全なコードは例外の種類に依存しない。知ってる冷害に対しては安全だけど知らない例外が飛んできたら安全じゃない
なんてのはそもそも例外安全とは言わない。
301デフォルトの名無しさん (ワッチョイ ef0a-qSkN)
2024/03/03(日) 22:08:48.84ID:qMaLplcd0302デフォルトの名無しさん (ワッチョイ 3b7c-85wQ)
2024/03/03(日) 22:31:19.01ID:GdJ/jhkt0 >>301
自分でnoexcept指定した関数のことなら投げないことを確認するテストくらい書けよ当たり前だろ
自分でnoexcept指定した関数のことなら投げないことを確認するテストくらい書けよ当たり前だろ
303デフォルトの名無しさん (ワッチョイ 0fcf-0WZ8)
2024/03/04(月) 00:08:35.31ID:gWJ01aQ50 >お前さ、すべてのnoexcept関数呼び出しの例外テスト書いてんのか?
悪魔の証明をテストすんのか
悪魔の証明をテストすんのか
304デフォルトの名無しさん (ワッチョイ ef0a-qSkN)
2024/03/04(月) 07:57:02.63ID:D3yk9beu0305デフォルトの名無しさん (ワッチョイ 8b63-eOBD)
2024/03/04(月) 07:58:21.27ID:KYG2Ugpe0 なんか予想外に低レなレスポンスを寄越した>>299……
さすがに>>283の後に>>284のような楽天的なことを言えるだけのことはあるということか……
例外安全は確かに目指すべき境地であり、例外安全なオブジェクトだけでコードを書けば
その関数は例外安全となる。try { } catch ()など一切不要、となるわけで一見実現が簡単に思える
が、例外安全なオブジェクトだけかをもれなく機械的に確認する方法は無い上に、
中断したら別物になる(処理の順序が命)というアルゴリズムというものの本質的特性により、
>>183 のような try { } catch () が必要なケースは隙あらば混ざり込んでくるから(※1)
>>284が空想するようなシステム全体の例外安全化などは現実には不可能。
せいぜいある程度の規模のオブジェクトであれば、十分テストすれば
(自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかを慎重に確認せねばならない)
ほぼほぼの信頼度で実現できるというぐらい。
さすがに>>283の後に>>284のような楽天的なことを言えるだけのことはあるということか……
例外安全は確かに目指すべき境地であり、例外安全なオブジェクトだけでコードを書けば
その関数は例外安全となる。try { } catch ()など一切不要、となるわけで一見実現が簡単に思える
が、例外安全なオブジェクトだけかをもれなく機械的に確認する方法は無い上に、
中断したら別物になる(処理の順序が命)というアルゴリズムというものの本質的特性により、
>>183 のような try { } catch () が必要なケースは隙あらば混ざり込んでくるから(※1)
>>284が空想するようなシステム全体の例外安全化などは現実には不可能。
せいぜいある程度の規模のオブジェクトであれば、十分テストすれば
(自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかを慎重に確認せねばならない)
ほぼほぼの信頼度で実現できるというぐらい。
306デフォルトの名無しさん (ワッチョイ 8b63-eOBD)
2024/03/04(月) 07:59:55.02ID:KYG2Ugpe0 (※1) >>183 の関数そのものは、例外安全なスレッドオブジェクトでも使ったらtry { } catch () 無しの例外安全な関数うに書き直すことはできうる
307デフォルトの名無しさん (ワッチョイ 8b63-eOBD)
2024/03/04(月) 08:09:49.95ID:KYG2Ugpe0 あと寝てて思ったがプロセスが死んでもサービスが継続したらお客様には迷惑を掛けずに済むので
(直接そういうのをやってちるわけではないので強くは言わんが
ウォッチドッグタイマー的な死活監視で異常あらばプロセス再起動とかマシンを切り替えるとか方法はいくつもあって、
十分テストされたプログラムならクラッシュ頻度をポアソン分布とみなして信頼度も出せる
やっぱ「お客様の前で落ちたら恥ずかしいから」というつまらないプライドを基本的動機とする
try {
....
} catch (std::exception& e) {
log_e("std::exceptionがスローされました");
};
みたいなコードをリリースコードに含めましょうという>>282の調査のスタンスは全く正当化されない
100日に一回しか再現しないバグの修正を3日でやれと言われて手元にあるのがメモリダンプの代わりに上の23文字のログメッセージだけだったりしたら
>>282は自○が真剣に考慮すべき選択肢に……
(直接そういうのをやってちるわけではないので強くは言わんが
ウォッチドッグタイマー的な死活監視で異常あらばプロセス再起動とかマシンを切り替えるとか方法はいくつもあって、
十分テストされたプログラムならクラッシュ頻度をポアソン分布とみなして信頼度も出せる
やっぱ「お客様の前で落ちたら恥ずかしいから」というつまらないプライドを基本的動機とする
try {
....
} catch (std::exception& e) {
log_e("std::exceptionがスローされました");
};
みたいなコードをリリースコードに含めましょうという>>282の調査のスタンスは全く正当化されない
100日に一回しか再現しないバグの修正を3日でやれと言われて手元にあるのがメモリダンプの代わりに上の23文字のログメッセージだけだったりしたら
>>282は自○が真剣に考慮すべき選択肢に……
308デフォルトの名無しさん (ワッチョイ 9fad-ZLJX)
2024/03/04(月) 08:50:22.67ID:MzjtGtOW0309デフォルトの名無しさん (ワッチョイ 0fcf-0WZ8)
2024/03/04(月) 08:53:34.53ID:gWJ01aQ50 >例外安全は確かに目指すべき境地であり、例外安全なオブジェクトだけでコードを書けば
>その関数は例外安全となる。try { } catch ()など一切不要、となるわけで一見実現が簡単に思える
例外安全だからといってcatchが不要になるわけないだろ。
根本的なところで勘違いしてるから頓珍漢が主張を続けてるわけだな。
>その関数は例外安全となる。try { } catch ()など一切不要、となるわけで一見実現が簡単に思える
例外安全だからといってcatchが不要になるわけないだろ。
根本的なところで勘違いしてるから頓珍漢が主張を続けてるわけだな。
310デフォルトの名無しさん (ワッチョイ abe4-XE6S)
2024/03/04(月) 10:20:12.57ID:QvxlWFfk0 例外安全には基本保証・強い保証・no-fail保証がある
例外がスローされない関数を作ればno-fail保証がある
基本保証や強い保証は例外発生後も不整合が発生しないもの
たとえば例外が発生した関数をもう一度呼び出すと「すでに実行中です」とエラーを返すようなものは例外安全ではない(おそらく実行中フラグ変数が立ったままになっている)
例外がスローされない関数を作ればno-fail保証がある
基本保証や強い保証は例外発生後も不整合が発生しないもの
たとえば例外が発生した関数をもう一度呼び出すと「すでに実行中です」とエラーを返すようなものは例外安全ではない(おそらく実行中フラグ変数が立ったままになっている)
311デフォルトの名無しさん (ワッチョイ abe4-XE6S)
2024/03/04(月) 10:23:14.03ID:QvxlWFfk0 10行のデータをファイルに出力するとき、例外が発生して5行だけデータが出力されてしまうのは強い保証があるとはいえない
例外が発生した際にデータを書き込む前のファイル状態に戻れば強い保証がある(例外安全である)といえる
例外が発生した際にデータを書き込む前のファイル状態に戻れば強い保証がある(例外安全である)といえる
312はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b32-hL5K)
2024/03/04(月) 12:10:26.04ID:ASLjljy+0 誤解のないように念のため補足。
この場合の「強い」という用語は性質の分類であって強いことがより良いというわけではないという話をしてる。(んだよね?)
例外を出さずに済むならそれに越したことはないよ。
でも、ひとつの部品の中では問題を解決できないことがあるからこそ例外を用いて他の部品と連携しての解決を試みるわけ。
連携するには保証の強力さよりも保証範囲の明瞭さ (明瞭でもカバーしようがない設計はあかんが) が大事で、プログラム全体で整合性が保たれていれば例外安全と言える。
仕様が不明瞭なライブラリもあるのが現実だってのはそりゃそうだけど、出来が悪い部品とつじつま合わせをしきらないってのは例外のせいでも C++ のせいでもない。
この場合の「強い」という用語は性質の分類であって強いことがより良いというわけではないという話をしてる。(んだよね?)
例外を出さずに済むならそれに越したことはないよ。
でも、ひとつの部品の中では問題を解決できないことがあるからこそ例外を用いて他の部品と連携しての解決を試みるわけ。
連携するには保証の強力さよりも保証範囲の明瞭さ (明瞭でもカバーしようがない設計はあかんが) が大事で、プログラム全体で整合性が保たれていれば例外安全と言える。
仕様が不明瞭なライブラリもあるのが現実だってのはそりゃそうだけど、出来が悪い部品とつじつま合わせをしきらないってのは例外のせいでも C++ のせいでもない。
313デフォルトの名無しさん (ワッチョイ f7f0-B2uz)
2024/04/08(月) 15:38:53.52ID:IvxniXPw0 std::initializer_listについて質問です
下の例ですがコンストラクタの引数に配列リテラルを指定した場合、リストがコピーされてしまいますよね?
これは無駄なので回避したいのですが良い方法はありますか?
https://cpprefjp.github.io/reference/initializer_list/initializer_list.html
下の例ですがコンストラクタの引数に配列リテラルを指定した場合、リストがコピーされてしまいますよね?
これは無駄なので回避したいのですが良い方法はありますか?
https://cpprefjp.github.io/reference/initializer_list/initializer_list.html
314デフォルトの名無しさん (ワッチョイ df01-g9Lk)
2024/04/09(火) 12:13:11.96ID:gepNgOiE0 どこのコピー?
315デフォルトの名無しさん (ブーイモ MM3e-Nnmc)
2024/04/09(火) 12:52:21.68ID:80QuF/MqM リテラルのコピーを気にするならconstexprじゃねーの?
ほんとにコンパイル時に定数になるかは知らんけど
ほんとにコンパイル時に定数になるかは知らんけど
316デフォルトの名無しさん (ワッチョイ 7b32-B3tP)
2024/04/09(火) 15:22:07.81ID:hsAXyuRl0 >>313
C++ に配列リテラルはない。
その書き方で出てくる波括弧はリスト初期化の構文の一部で、
波括弧の部分単体は配列リテラルではない。
実行時にオブジェクトの構築を避けるならコンパイル時に構築することになるが
それはそれで色々と制約があるんでほんまにそれが必要なんか?
というのはよく考えないといけない。
あえてやるならこんな感じかな……。
https://wandbox.org/permlink/HStrLq8ddyC3tby2
C++ に配列リテラルはない。
その書き方で出てくる波括弧はリスト初期化の構文の一部で、
波括弧の部分単体は配列リテラルではない。
実行時にオブジェクトの構築を避けるならコンパイル時に構築することになるが
それはそれで色々と制約があるんでほんまにそれが必要なんか?
というのはよく考えないといけない。
あえてやるならこんな感じかな……。
https://wandbox.org/permlink/HStrLq8ddyC3tby2
317デフォルトの名無しさん (ワッチョイ c3c9-hAMa)
2024/04/09(火) 20:10:25.18ID:T/amOWJO0 とあるtemplateの関数を実装しているのですが、
const指定の振る舞いがよくわからなくなったので
質問させてください。
以下の(だいぶ簡略化した)コードで、
f_without_const<const int*>(const int* a)
はコンパイルが通るのですが
f_with_const<int*>(const int* a)
がコンパイルが通らないのは何故でしょうか。
https://wandbox.org/permlink/OIgKM2DTqvpGduRV
const指定の振る舞いがよくわからなくなったので
質問させてください。
以下の(だいぶ簡略化した)コードで、
f_without_const<const int*>(const int* a)
はコンパイルが通るのですが
f_with_const<int*>(const int* a)
がコンパイルが通らないのは何故でしょうか。
https://wandbox.org/permlink/OIgKM2DTqvpGduRV
318デフォルトの名無しさん (ワッチョイ f7f0-B2uz)
2024/04/09(火) 20:30:45.76ID:lDhzon+/0319デフォルトの名無しさん (ワッチョイ 2790-Bmwq)
2024/04/09(火) 21:45:08.71ID:+RmfoJzl0 >>317
templateは型が違うと全くの別物として処理するからだと思う
templateは型が違うと全くの別物として処理するからだと思う
320デフォルトの名無しさん (ワッチョイ 7b10-qE2a)
2024/04/09(火) 22:00:45.26ID:5hAg3cgl0321はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b32-B3tP)
2024/04/10(水) 08:39:45.44ID:Fk7YBwaR0 const T t に対して const int* a が来たら
字句の順序としては T に int* が対応してるように見えちゃうもんな……。
字句の順序としては T に int* が対応してるように見えちゃうもんな……。
322デフォルトの名無しさん (ワッチョイ c37a-hAMa)
2024/04/11(木) 21:42:31.84ID:0cjrPM+u0 317です、返信遅くなってすみません
確かに言われてみればconstが修飾してるのはint*なので、意味的にint *constが正しいですね…
ありがとうございました
確かに言われてみればconstが修飾してるのはint*なので、意味的にint *constが正しいですね…
ありがとうございました
323デフォルトの名無しさん (ワッチョイ b77c-0iQt)
2024/04/14(日) 14:49:11.63ID:tTNkn9kB0 先月東京で標準化委員会の会議あったらしいけどなんか情報ないの?
324デフォルトの名無しさん (ワッチョイ ff33-m4LK)
2024/04/14(日) 15:03:51.38ID:H7y3imqp0325デフォルトの名無しさん (ワッチョイ 7f52-9wFU)
2024/04/16(火) 00:50:18.09ID:38VQ+8UT0326デフォルトの名無しさん (ワッチョイ 67b1-Jq5A)
2024/05/01(水) 21:36:46.68ID:/DCu7vsT0 python みたいに何でも格納できる辞書型ってC++には無いよね?
327はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8732-nVjz)
2024/05/01(水) 22:29:05.62ID:IV4TsWNk0 >>326
要素を std::any にすればだいたいどんな型の値でも入れられる。
いろんな型を入れたところで使うときには元の型として取り出さないといけないから
処理は煩雑になってあまり良いことはないけど。
要素を std::any にすればだいたいどんな型の値でも入れられる。
いろんな型を入れたところで使うときには元の型として取り出さないといけないから
処理は煩雑になってあまり良いことはないけど。
328デフォルトの名無しさん (ワッチョイ 8f7c-Y/5H)
2024/05/09(木) 20:23:09.67ID:MzADiHDk0329デフォルトの名無しさん (ワッチョイ bed6-w0ma)
2024/05/09(木) 21:19:14.71ID:M6C6+6vz0 何いってんだ
330デフォルトの名無しさん (ワッチョイ bbda-JG92)
2024/05/10(金) 11:53:06.45ID:P+BretyD0 #elifは大昔からあるぞ
331デフォルトの名無しさん (ワッチョイ 8f7c-Y/5H)
2024/05/11(土) 09:12:25.64ID:YR9R4Y390 cpprefjpが間違ってるだけ?
それともずっと規格から欠落してたけど誰も気付いてなかったパターン?
それともずっと規格から欠落してたけど誰も気付いてなかったパターン?
332デフォルトの名無しさん (ワッチョイ bed6-w0ma)
2024/05/11(土) 11:19:25.57ID:PrWZroBw0 規格が読めないならC++やめろ
333デフォルトの名無しさん (ワッチョイ 0b63-IWIS)
2024/05/11(土) 19:02:18.20ID:RotYKdRC0 elifを逆から読んだらfile
ラリーはこれを嫌ってPerlではelsifにした(適当
ラリーはこれを嫌ってPerlではelsifにした(適当
334デフォルトの名無しさん (ワッチョイ bbda-JG92)
2024/05/11(土) 22:20:47.67ID:HBPowvO20 シェルが変だからな
case ~ esac
if ~ fi
case ~ esac
if ~ fi
質問なのですが
Q1. std::fstreamでファイルを開くときのフラグの指定の仕方は次のどれが正義?
std::fstream ofs("foo.txt", std::ios::out | std::ios::binary); // (1)
std::fstream ofs("foo.txt", std::basic_ios::out | std::basic_ios::binary); // (2)
std::fstream ofs("foo.txt", std::fstream::out | std::fstream::binary); // (3)
Q1. std::fstreamでファイルを開くときのフラグの指定の仕方は次のどれが正義?
std::fstream ofs("foo.txt", std::ios::out | std::ios::binary); // (1)
std::fstream ofs("foo.txt", std::basic_ios::out | std::basic_ios::binary); // (2)
std::fstream ofs("foo.txt", std::fstream::out | std::fstream::binary); // (3)
337デフォルトの名無しさん (ブーイモ MMde-FHn0)
2024/06/06(木) 15:53:22.90ID:Vp529NVwM フル手書き前提がくそださい
338デフォルトの名無しさん (ワッチョイ fe2c-7W3t)
2024/06/06(木) 19:13:19.37ID:FMMlTunO0 fstreamなんだったらfstreamのメンバで書くのがいいんじゃない
(1)は#include <ios>が要るし、
(2)は「basic_」の6文字×フラグの数 だけ長いし、
(3)も同様でありなおかつ>>337に従ったとき
use binary = std::fstream::binary;
use ibinary = std::ifstream::binary;
use obinary = std::ofstream::binary;
となってしまい、
どれもこれもコード量最小化原則的にビミョーなことに……
ていうかなんで同じことをするのに複数の書き方があるのかっていうか、
Perlじゃあるまいし……
(2)は「basic_」の6文字×フラグの数 だけ長いし、
(3)も同様でありなおかつ>>337に従ったとき
use binary = std::fstream::binary;
use ibinary = std::ifstream::binary;
use obinary = std::ofstream::binary;
となってしまい、
どれもこれもコード量最小化原則的にビミョーなことに……
ていうかなんで同じことをするのに複数の書き方があるのかっていうか、
Perlじゃあるまいし……
340デフォルトの名無しさん (ワッチョイ d68d-vvKF)
2024/06/06(木) 23:54:13.70ID:7ZzCG2hU0 iostreamはまあしゃーない…
341デフォルトの名無しさん (ワッチョイ a97c-3xqL)
2024/06/07(金) 02:20:24.96ID:GhXFHGen0 C++の悪評の4割くらいはiostreamのせいだからな
342デフォルトの名無しさん (ワッチョイ a944-l7CW)
2024/06/07(金) 04:24:11.05ID:qf+nnTv50 ここでCmakeとNinjaについて聞くのダメ?
どーも関係がよくわからなくて?
どーも関係がよくわからなくて?
343はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a932-zlCG)
2024/06/07(金) 05:26:04.94ID:zM43Xr/H0 >>342
そういう雑多な話題のちょうどよいスレは見当たらんし、単発で終わる質問程度なら許容されると思うが……。
質問の内容が漠然としているなら丁寧な回答は得られないと思う。
「よくわからない」という状況になるときってのは大抵の場合に関連する前提知識が足りてないので
質問が連鎖的に発生してダラダラ続いたりするから。
そういう雑多な話題のちょうどよいスレは見当たらんし、単発で終わる質問程度なら許容されると思うが……。
質問の内容が漠然としているなら丁寧な回答は得られないと思う。
「よくわからない」という状況になるときってのは大抵の場合に関連する前提知識が足りてないので
質問が連鎖的に発生してダラダラ続いたりするから。
344はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a932-zlCG)
2024/06/07(金) 05:36:24.41ID:zM43Xr/H0345デフォルトの名無しさん (ワッチョイ fee5-FHn0)
2024/06/07(金) 13:37:29.47ID:kav19u0f0 copilotで補完でok
346デフォルトの名無しさん (ワッチョイ 6af0-AYul)
2024/06/07(金) 17:07:58.06ID:NFmVQMC40 バカの解決策
347デフォルトの名無しさん (ブーイモ MMea-FHn0)
2024/06/07(金) 21:12:45.28ID:70o6R+hDM また時代に取り残されるじじい
348デフォルトの名無しさん (ワッチョイ 1563-WQ8n)
2024/06/07(金) 21:48:19.45ID:ORLoeNdF0349デフォルトの名無しさん (ワッチョイ fee5-FHn0)
2024/06/08(土) 01:03:51.86ID:k3Jnk/Aj0 静的解析で文句言われる可能性あるからやめときな
頻発するならスニペット作ればいいだけ
そういう表面的なことにこだわる奴は三流
頻発するならスニペット作ればいいだけ
そういう表面的なことにこだわる奴は三流
350デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 04:26:59.39ID:RJYm8+UN0 lldb v14.0.0 で正しくプロセスを実行できません
apt insrall でインストールしたもので, 環境はwsl 1 です
具体的には下のサイトのIssue Encountered:と全く同じ症状です
https://stackoverflow.com/questions/78275920/troubleshoot-lldb-on-ubuntu-wsl
改めて書きますと Hello World 表示だけのソースを clang でコンパイルし,
lldb で読み込み run させると
Process 20784 launched: '/home/Hustler/c++/move/move' (x86_64)
と表示されたまま応答がなくなり 放置すると(サイトでは強制終了させてるようですが)
Process 20784 exited with status = -1 (0xffffffff) lost connection
となってコマンド入力待ち状態となります
ちなみにプログラムはそのまま実行して正しく動作しますし gdb でも何の問題もありません
これに関して何か情報をお持ちの方いますか?
apt insrall でインストールしたもので, 環境はwsl 1 です
具体的には下のサイトのIssue Encountered:と全く同じ症状です
https://stackoverflow.com/questions/78275920/troubleshoot-lldb-on-ubuntu-wsl
改めて書きますと Hello World 表示だけのソースを clang でコンパイルし,
lldb で読み込み run させると
Process 20784 launched: '/home/Hustler/c++/move/move' (x86_64)
と表示されたまま応答がなくなり 放置すると(サイトでは強制終了させてるようですが)
Process 20784 exited with status = -1 (0xffffffff) lost connection
となってコマンド入力待ち状態となります
ちなみにプログラムはそのまま実行して正しく動作しますし gdb でも何の問題もありません
これに関して何か情報をお持ちの方いますか?
351デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 05:11:57.08ID:RJYm8+UN0 今やってみたのですが
lldb-14をuninstall(remove)し lldb-15をインストールしてみましたが
状況は改善しませんでした
lldb-14をuninstall(remove)し lldb-15をインストールしてみましたが
状況は改善しませんでした
352はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f332-Oh5j)
2024/06/09(日) 15:07:14.43ID:bthWHIYm0 WSL1 は (ある程度) Linux 互換のシステムコールを windows 内に実装することで実現していて Linux カーネルそのものではないので色々と不足がある。
(そのかわり Windows と親和性がある部分もある。)
WSL1 で用意してない Linux の機能に依存したアプリケーションは動かない。
まともな互換性が必要ならWSL2 を使いなさいという話なので手間をかけて WSL1 を積極的にはサポートしないと思う。
(そのかわり Windows と親和性がある部分もある。)
WSL1 で用意してない Linux の機能に依存したアプリケーションは動かない。
まともな互換性が必要ならWSL2 を使いなさいという話なので手間をかけて WSL1 を積極的にはサポートしないと思う。
353デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 20:56:05.63ID:RJYm8+UN0354デフォルトの名無しさん (ワッチョイ 6363-vt9G)
2024/06/09(日) 21:14:14.41ID:VES2dE5O0 WSLはlldbが使うシステムコールが足りてないって昔から言われていたかと
ターゲット機を別にするとかWSL2にするとかじゃね?
ターゲット機を別にするとかWSL2にするとかじゃね?
355デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 21:36:35.88ID:RJYm8+UN0 >>354
>WSLはlldbが使うシステムコールが足りてないって昔から言われていたかと
なるほどTHXです
clang使ってなかったので全然わかりませんでした
動かないlldbもさんざんggったんだけど system call未実装にはたどり着けませんでした
ようやくすっきりしました
>WSLはlldbが使うシステムコールが足りてないって昔から言われていたかと
なるほどTHXです
clang使ってなかったので全然わかりませんでした
動かないlldbもさんざんggったんだけど system call未実装にはたどり着けませんでした
ようやくすっきりしました
356はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f332-Oh5j)
2024/06/09(日) 22:04:05.34ID:bthWHIYm0 ざっとググってみた感じたと wsl1 では procfs が提供する情報が少ないのが lldb が動かない直接の原因みたいな数年前の情報は見つかる。
内部構造がまるで違うはずなのに表面的なインターフェースは互換にするなんてのは無理のある話なので互換性が「ある程度」にとどまるのは仕方ない。
内部構造がまるで違うはずなのに表面的なインターフェースは互換にするなんてのは無理のある話なので互換性が「ある程度」にとどまるのは仕方ない。
357デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 22:18:48.29ID:RJYm8+UN0 んー
clangちょっと調べたかったんで
Visual Studioにclangインスコして調べますわ
できるならwslでやるのが手っ取り早いんですが
Q9550とQ9550sしか持ってないもんで
以来CPUの爆値上がりと最近の円の爆下がりで新しく組めてないんですわ
ダイサイズ変わらないのにCPU 3万ー> 10万とか購買意欲が萎える
clangちょっと調べたかったんで
Visual Studioにclangインスコして調べますわ
できるならwslでやるのが手っ取り早いんですが
Q9550とQ9550sしか持ってないもんで
以来CPUの爆値上がりと最近の円の爆下がりで新しく組めてないんですわ
ダイサイズ変わらないのにCPU 3万ー> 10万とか購買意欲が萎える
358デフォルトの名無しさん (ブーイモ MM1f-vt9G)
2024/06/10(月) 18:15:47.68ID:bkv2YMA2M359350 (ワッチョイ f344-7AaF)
2024/06/10(月) 21:38:00.71ID:gvR5xwnw0 自己レスです
その後 Visual Studioのインストールオプションでclangを選択し
正しく動作することは確認したのですが...
今や誰でもロハで使えるインテルコンパイラがとっくの昔にllvm化されてたんですね
clangに拘りがなければ x86/x64のwin/linux/wsl は素直にopenAPI使っとくのが幸せかも.
ちなみにwsl 1にlinux版をインストールしましたが
コンパイラicxもデバッガgdb-opwnapiも何の問題もなく動いてます(今のところは)
なので
Visual Studio はインストールオプションのclang は外してもとに戻し
wsl は
>apt remove clang clang-15
>apt remove lldb lldb-15
しときました
その後 Visual Studioのインストールオプションでclangを選択し
正しく動作することは確認したのですが...
今や誰でもロハで使えるインテルコンパイラがとっくの昔にllvm化されてたんですね
clangに拘りがなければ x86/x64のwin/linux/wsl は素直にopenAPI使っとくのが幸せかも.
ちなみにwsl 1にlinux版をインストールしましたが
コンパイラicxもデバッガgdb-opwnapiも何の問題もなく動いてます(今のところは)
なので
Visual Studio はインストールオプションのclang は外してもとに戻し
wsl は
>apt remove clang clang-15
>apt remove lldb lldb-15
しときました
360350 (ワッチョイ f344-7AaF)
2024/06/11(火) 06:20:17.73ID:Ip4/j3Hv0 ☓ openAPI
◯ oneAPI
◯ oneAPI
361あぼーん
NGNGあぼーん
362あぼーん
NGNGあぼーん
363デフォルトの名無しさん (ワッチョイ 43d7-pk1M)
2024/07/13(土) 19:06:26.39ID:Dtkl2SPB0 若者のBoost離れ
364デフォルトの名無しさん (ワッチョイ 0501-twcF)
2024/07/13(土) 19:56:34.01ID:vwgbCsGD0 と言いますと?
365デフォルトの名無しさん (ワッチョイ f5f9-pk1M)
2024/07/13(土) 21:42:42.00ID:Rh1MnFN10 VS17.10.xでBoostがビルドできなくなってるのに
誰も触れない
誰も触れない
366デフォルトの名無しさん (ワッチョイ f5f9-pk1M)
2024/07/13(土) 21:47:29.39ID:Rh1MnFN10 MSVC143から144に変わったせいでビルドできないらしいですよ
367デフォルトの名無しさん (ワッチョイ e91c-hIhh)
2024/07/16(火) 12:22:56.57ID:gS8T2k/f0 >>342
CMakeとNinjaはC++の話題なのでOKです
CMakeとNinjaはC++の話題なのでOKです
368デフォルトの名無しさん (ワッチョイ 4901-V77j)
2024/07/27(土) 17:57:44.53ID:KDd62vAV0 C++、
型の指定が、めんどい
速いぐらいしか、利点ないよな
型の指定が、めんどい
速いぐらいしか、利点ないよな
369デフォルトの名無しさん (ワッチョイ 7b95-4q6c)
2024/07/27(土) 20:53:02.50ID:eNksZtKQ0 顧客目線に立てない三流の感想
370デフォルトの名無しさん (ワッチョイ 4901-7phL)
2024/07/27(土) 21:03:15.66ID:zOSUCWw50 >>368
auto使えば?
auto使えば?
371デフォルトの名無しさん (ワッチョイ 1379-xel+)
2024/07/27(土) 23:40:34.69ID:iHlVB6Tw0 ランタイムに依存しない(し難い)のが最大の利点だろうに
さらに大抵のアーキテクチャには用意されてるからクロスプラットフォームの観点でもなんだかんだ最強なんだよ
むしろ最近はChatGPTが他の言語で書いたやつまで適当に書き直してくれるのもあって最強度がより高まってきてると感じるね
さらに大抵のアーキテクチャには用意されてるからクロスプラットフォームの観点でもなんだかんだ最強なんだよ
むしろ最近はChatGPTが他の言語で書いたやつまで適当に書き直してくれるのもあって最強度がより高まってきてると感じるね
372デフォルトの名無しさん (ワッチョイ 8e95-N8l3)
2024/07/28(日) 00:00:39.51ID:ePI6t8jD0 全く同意できんな
むしろ環境依存上等で使うのがC/C++だろ
パッケージシステムも標準がないしビルド環境もばらばら
どこが最強やねん
標準ライブラリで完結するようなしょぼいプログラムなら他の言語使ったほうが楽
むしろ環境依存上等で使うのがC/C++だろ
パッケージシステムも標準がないしビルド環境もばらばら
どこが最強やねん
標準ライブラリで完結するようなしょぼいプログラムなら他の言語使ったほうが楽
373デフォルトの名無しさん (ワッチョイ bdf0-+IYp)
2024/07/28(日) 00:11:55.23ID:4HqkcgMt0 型の指定のサンプル
GetProcAddressに変換をかけるマクロ
#define ENTRY_INTERFACE(api) api = (decltype(api)) GetProcAddress(hInst,"_INTERFACE_"#api)
ね?簡単でしょ?
GetProcAddressに変換をかけるマクロ
#define ENTRY_INTERFACE(api) api = (decltype(api)) GetProcAddress(hInst,"_INTERFACE_"#api)
ね?簡単でしょ?
374デフォルトの名無しさん (ワッチョイ 5d01-viEi)
2024/07/28(日) 12:00:20.72ID:x9q80Pnt0375デフォルトの名無しさん (ワッチョイ aa3e-cE1m)
2024/07/28(日) 17:36:32.24ID:9wLF96CX0 >>374
あとテンプレートを使ったダックタイプとかも便利。
あとテンプレートを使ったダックタイプとかも便利。
376デフォルトの名無しさん (オッペケ Sr05-viEi)
2024/07/28(日) 21:14:24.07ID:roXukc4Cr377デフォルトの名無しさん (ワッチョイ 4132-nuT0)
2024/07/29(月) 08:53:31.23ID:cQQT2a1I0 実践に入る前に言語の入門は読んだほうが良いと思う。
基礎を積まずに実践しようとするのは無謀。
基礎を積まずに実践しようとするのは無謀。
378デフォルトの名無しさん (ワッチョイ 9a05-pVLH)
2024/07/29(月) 15:25:34.30ID:heyNGOtI0 なんでも、まずは改造から入るんだぜ
こうですか、うんたぶんこう
こうですか、うんたぶんこう
379デフォルトの名無しさん (ワッチョイ 4132-nuT0)
2024/07/29(月) 19:25:02.89ID:cQQT2a1I0 C++ には未規定がやたらたくさんあるんだ。
実際の挙動から仕様を想像しようとすると意味不明でグダグダやねん。
実際の挙動から仕様を想像しようとすると意味不明でグダグダやねん。
380デフォルトの名無しさん (ブーイモ MM9a-N8l3)
2024/07/29(月) 20:07:37.15ID:Nl7D5VelM ネットでいくらでも勉強できるだろ
書籍なんかいらん
書籍なんかいらん
381デフォルトの名無しさん (ワッチョイ aa3e-cE1m)
2024/07/29(月) 20:36:26.35ID:9/o4+28+0 結局ライブラリが重要だから、作りたいアプリで流行っているライブラリの入門をやるのがいい。
作りたいアプリそのものじゃなくても、類似アプリを作るのはやる気に繋がる。
作りたいアプリそのものじゃなくても、類似アプリを作るのはやる気に繋がる。
382デフォルトの名無しさん (オッペケ Sr05-viEi)
2024/07/29(月) 22:02:41.02ID:8hMQwTW/r >>377
github にあがってるやつを、理解しようとして、助けになる本は、結局ない希ガス
実際、実践的なものがないので、文法理解で終わってしまうという
https://github.com/TadaoYamaoka/cmajiang
これ、再利用して、アプリを作りたいのだが
github にあがってるやつを、理解しようとして、助けになる本は、結局ない希ガス
実際、実践的なものがないので、文法理解で終わってしまうという
https://github.com/TadaoYamaoka/cmajiang
これ、再利用して、アプリを作りたいのだが
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 食品の高騰対策、政府が交付金の「特別枠」検討 原則全ての自治体で [蚤の市★]
- 【超絶悲報】日本政府「高市さんの答弁撤回はない。政権として弱腰と映る姿勢は見せられない」これもう立憲岡田の議員辞職しかないだろ [519511584]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 台湾「高市さんが台湾人の悲願を叶えてくれた!」これじゃ高市さん発言撤回できないぢゃん😰 [523957489]
- 高市周辺、さすがに焦り始めるww「小さな火種が火事になりかけている。早く鎮火しなくてはいけない」 [271912485]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
