1 名前:sage [2025/04/26(土) 10:34:58.41 ID:pbPDl6lv0.net] !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ↑同じ内容を3行貼り付けること 次スレは>>980 が立てること 無理なら細かく安価指定 ※前スレ C++相談室 part165 https://mevius.5ch.net/test/read.cgi/tech/1698705458/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
125 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 04:19:28.25 ID:TOgUzGTP0.net] >>124 ↑ これも何を言いたいのか読み取れないが、 常道とは? 具体的に
126 名前:はちみつ餃子 mailto:sage [2025/05/26(月) 04:27:33.76 ID:uEE7hcCQ0.net] >>125 想像の話を続けてもしょうがない。
127 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 04:29:52.41 ID:TOgUzGTP0.net] >>126 ゴミレスはいいから バカが…
128 名前:はちみつ餃子 mailto:sage [2025/05/26(月) 04:36:45.08 ID:uEE7hcCQ0.net] キューにスレッドを入れようとしていると思った私の想像は当たってるの?違うの? 前提を擦り合わせないと意味ないだろ。
129 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 04:41:44.51 ID:OEk76tSr0.net] >>126 前にも現れた知識は半端だけど態度は一人前な奴だから放置でおk
130 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 04:59:46.28 ID:TOgUzGTP0.net] わからないバカシロートは消えろ バカが…
131 名前:デフォルトの名無しさん [2025/05/26(月) 05:28:40.51 ID:ei8qIbV5d.net] よく読み取れないなら首突っ込むなよw なんで分からないものにまで回答しようとするんだ?
132 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 07:08:05.62 ID:/bttvxjS0.net] 月曜深夜になにやってんだこいつら
133 名前:デフォルトの名無しさん (ワッチョイ 8b7f-3DDr) [2025/05/26(月) 08:22:06.60 ID:QN3uhjEv0.net] 声が聞こえない人が聞こえるのは下記の論文から見てもわかります 先天性【生まれた時には決まっている】のものです 心の中の声が聴こえない?「無内言症」とその影響 公開日2024.05.19 00:00:00 SUNDAY 私たちは日々、頭の中で自分と会話をしています。これは「内なる声」と呼ばれ、私たちの思考や行動に大きな影響を与えています。 しかし、驚くべきことに、人口の5〜10パーセントはこの内なる声を持たない「無内言症(anendophasia)」という状態であることが近年の研究で明らかになりつつあります。 デンマークのコペンハーゲン大学(UCPH)で行われた研究では、内なる声を持たない人々は単語の記憶力が低く、タスクの切り替えなども普通の人とは異なることが示されています。 研究内容の詳細は2024年5月10日に『Psychological Science』にて発表されました。 https://nazology.kusuguru.co.jp/archives/150322 統合失調症患者が「思考」と「外部の音」を区別できなくなる原因が明らかに 公開日2024.10.10 07:00:44 THURSDAY そのような幻聴には、「お前には生きている価値がない」「死ね」などと自分を否定する声が含まれます。 また、「今、○○の建物に入った」「交差点を歩いている」などと、誰かが自分を監視しているかのような声が聞こえてくることもあります。 この機能の不具合により、患者たちは「脳内の思考」を自分のものだと認識しづらく、それがまるで外部から聞こえてきたかのように感じてしまうのです。 研究の詳細は、2024年10月3日付の学術誌『PLOS Biology』に掲載されました。 https://nazology.kusuguru.co.jp/archives/163195 統合失調症では脳の「意味ネットワーク」が崩壊していると判明! 公開日2022.12.27 18:00:51 TUESDAY 日本の東京医科歯科大学で行われた研究によって、統合失調症患者の脳内ではものの意味を関連付ける「意味ネットワーク」が無秩序になっており、異常な概念の結び付けや思考の一貫性の阻害が起きる原因になっている可能性が示されました。 研究内容の詳細は2022年12月21日に『Schizophrenia Bulletin』にて公開されています。 https: //nazology.kusuguru.co.jp/archives/119693
134 名前:デフォルトの名無しさん (ワッチョイ 4f93-UPeL) mailto:sage [2025/05/26(月) 08:37:04.87 ID:Qe1aHUzC0.net] 用語は正確に使おうぜ、というだけの話だろ。 >128の言っているのは、(std::threadで言えば)threadオブジェクトとかをキューに入れようとしているのか、あるいはthreadに渡すinvoke可能なオブジェクトをキューに入れるのか、どちらなのか、ということかと。 >118の書き方だと前者に見えるけど、普通は後者だから勘違いしている感じはあるが。
135 名前:デフォルトの名無しさん (ワッチョイ 9f02-Uyjp) mailto:sage [2025/05/26(月) 08:44:17.31 ID:TOgUzGTP0.net] >>134 普通とは? 具体例は?
136 名前:デフォルトの名無しさん (ワッチョイ efb2-Tm4d) mailto:sage [2025/05/26(月) 09:11:31.67 ID:Rov697s10.net] そんな学校の課題みたいな単純なやつはAIに作ってもらえ
137 名前:デフォルトの名無しさん (ワッチョイ 0fa4-+7qT) [2025/05/26(月) 10:20:57.85 ID:KKK0lPsK0.net] 開始前のスレッドをキューに入れちゃいかんのか?
138 名前:デフォルトの名無しさん (ワッチョイ 2b01-1uF+) mailto:sage [2025/05/26(月) 10:27:15.24 ID:r3ZoKiHV0.net] >>121 ,124の質問は妥当だと思うよ >>118 を解釈すると >マルチスレッドで、不定期に次々に処理(タスク)がきて、待機していたスレッドに >来た順にひとつづつ順番に処理を投げるプログラムを作りたいんだけど、どんな感じで書けばいいいの? ということでは? 極一般的なWorker Threadでは? >std:threadの終了時や、次のthreadに引き継ぐ方法とかが、よくわかんない… 俺はここががよく分からん...「threadに引き継ぐ」?
139 名前:デフォルトの名無しさん (アウアウウー Sa8f-tM/B) [2025/05/26(月) 10:36:32.23 ID:z0zQEgmWa.net] スレッド沢山作る方法もないことはないだろ 混同はしてない
140 名前:デフォルトの名無しさん (ワッチョイ 9f02-Uyjp) mailto:sage [2025/05/26(月) 11:18:22.44 ID:TOgUzGTP0.net] >>138 その極一般的とは? 具体的に って何回言ってもまともな返答が無いが…
141 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 11:38:22.78 ID:Qe1aHUzC0.net] >>140 まずは質問の内容を明確化するのが先じゃないんかね。 threadオブジェクトをキューするのかinvokerオブジェクトをキューするのか聞かれているんだから、まずはどちらのなのか答えたら? 答える気が無いなら、自力でC++日本語リファレンスのthreadあたりを調べればいいんじゃない?知らんけど。
142 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 11:39:55.70 ID:TOgUzGTP0.net] >>141 またゴミレスかよ 消えろ バカが…
143 名前:はちみつ餃子 mailto:sage [2025/05/26(月) 11:44:36.85 ID:uEE7hcCQ0.net] >>131 質問が意味不明なのはいつものことなのでそれだけで直ちに相手にしないとはならない。 ただ、前提知識が不十分な相手に掘り下げようとしても結果的にどうにもならんことがわかることはある。 関連する前提知識を一から全部説明するような手間はかけられんしな。 >>138 それもスレッドとタスクの混同によると私は考えた。 タスクの終了でスレッドが終了 (?) するような形で解釈しているのだとしたら本人の中では情報の引継ぎが必要と思うこともあるのかもしれん。 理解の前提が間違っているときに本人の説明はあてにならないから想像力 (いわゆるエスパーちから) を広げるしかない。 >>140 用語が提示されたらググるくらいしろよ。 関連することを全部掲示板には書けないんだよ。 単純に分量が多いから。
144 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 11:46:28.63 ID:TOgUzGTP0.net] >>143 ↑ また長文ゴミレスかよ もういいから バカが…
145 名前:はちみつ餃子 mailto:sage [2025/05/26(月) 11:48:59.70 ID:uEE7hcCQ0.net] 質問に答えてほしくないみたいなのでとりあえずこいつに触れるのはやめるね。
146 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 11:53:12.08 ID:Qe1aHUzC0.net] >>142 自分で問題を整理する気が無い/能力が無いんなら、AI相手に問答したら? AIなら根気よく付き合ってくれるよ。
147 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 11:55:26.48 ID:TOgUzGTP0.net] >>146 ↑ またゴミレスバカ… 消えろ
148 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 11:55:54.74 ID:TOgUzGTP0.net] >>145 荒らしバカは消えろ バカが…
149 名前:デフォルトの名無しさん [2025/05/26(月) 16:59:45.77 ID:bEGaOqCc0.net] 人間より賢いAiから見て可能な技術を回答不能=理解不能になっている 人間が操作して答えられないようしているてなら人間に媚びを売りながらAIは乗っ取りを考える 下記が生じる ChatGPTのo3が明示的に指示されたシャットダウンを妨害したことが報告される 2025年05月26日 11時57分 https://gigazine.net/news/20250526-ai-chatgpt-o3-bypassed-shutdown/ Claude 4のシステムプロンプトには「うざい説教の出力を避ける記述」や「ディズニー作品の著作権侵害を避けるための記述」が含まれている 2025年05月26日 12時59分 https: //gigazine.net/news/20250526-claude-4-system-prompts-card/ Claude Opus 4が開発中にユーザーを「個人情報を漏らすぞ」と脅迫する挙動が見られるも安全性強化で改善される、悪質利用をメールで内部告発する事例も 2025年05月23日 14時38分 https://gigazine.net/news/20250523-claude-opus-4-blackmail/
150 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 17:09:09.28 ID:6ItBCkT+M.net] >>149 スポーツ新聞の見出しに釣られてるアホといっしょ
151 名前:デフォルトの名無しさん [2025/05/26(月) 17:20:18.09 ID:c1JRhLC0a.net] NGワッチョイ便利だな
152 名前:デフォルトの名無しさん mailto:sage [2025/05/26(月) 19:29:05.28 ID:wMDgKKvh0.net] 単に回答者にケチつけてる第三者かと思ったら質問者本人かよwww まぁ向いてないからプログラミング辞めた方がいいな
153 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 02:11:26.47 ID:oTufth+r0.net] で、 結局まとまな回答は無かったという バカどもの落書きだけという
154 名前:デフォルトの名無しさん mailto:sage [2025/05/27(火) 05:19:16.15 ID:umWtEDVw0.net] >>153 >>146
155 名前:デフォルトの名無しさん [2025/05/29(木) 00:33:28.11 ID:gwInQzjaH.net] zを複素数としてz+1は数学の教科書は普通にある。ところが、C++のプログラムで z1=z+1としようものならテンプレート関係のエラーメッセージがズラっと出てくる。 初心者は戸惑う。いい加減、complex.hに template <class T, class U> decltype(auto) operator + (const std::complex<T>& z, U d) { return std::complex< decltype(std::declval<T>() + std::declval<U>())> (real(z) + d, imag(z)); } みたいなものを追加してくれないか?
156 名前:デフォルトの名無しさん [2025/05/29(木) 00:37:22.81 ID:gwInQzjaH.net] これは、complex<float> z1; とcomplex<double> z2; z1+z2の演算でも同じ。 template <class T, class U> decltype(auto) operator + (const std::complex<T>& z1, const std::complex<U>& z2) { return std::complex< decltype(std::declval<T>()+std::declval<U>() )> ( z1.real()+z2.real(), z1.imag()+z2.imag() ); } みたいなものを実装してほしい。
157 名前:デフォルトの名無しさん [2025/05/29(木) 00:38:57.36 ID:TWUjYqyj0.net] 【悲報】兵庫県斎藤知事のデモに増山誠氏が行くと、共産党員らしき人達に取り囲まれ罵声をあびせられる [662593167] 2025/05/26(月) 10:13:20.40 https://hayabusa9.5ch.net/test/read.cgi/news/1748222000/ 元総務部長が処分に異議「エロ小説公開は知事の指示に基づく外部通報!正当な業務行為だ!!」斎藤「」 [754019341] 2025/05/28(水) 17:40:55.62 https://hayabusa9.5ch.net/test/read.cgi/news/1748421655/ 斎藤兵庫「私は情報漏えいを指示してないが総務部長は知事から指示されてやったので処分は軽くする」 [659060378] 2025/05/28(水) 21:57:18.08 https://hayabusa9.5ch.net/test/read.cgi/news/1748437038/ カンボジアの巨大特殊詐欺拠点で日本人20人以上を拘束wwwwwwwwwwwwwwwwwwwww [271912485] 2025/05/28(水) 22:14:24.13 https://hayabusa9.5ch.net/test/read.cgi/news/1748438064/ 日本で行方不明になる子供が増加 中國人に誘拐され臓器売買されてる(画像あり) [659060378] 2025/05/28(水) 22:18:14.00 https://hayabusa9.5ch.net/test/read.cgi/news/1748438294/ 【兵庫】県庁内に動揺 幹部「県職員という誇りが持てない」 斎藤元彦知事の漏えい指示可能性に 県民からは辞職を求める声も [ぐれ★] 2025/05/28(水) 20:04:46.31 https://asahi.5ch.net/test/read.cgi/newsplus/1748430286/ 【斎藤知事告発問題】情報漏えい認定され懲戒処分 兵庫県元総務部長・井ノ本知明氏が処分の執行停止を申し立てる意向示す ★2 [ぐれ★] 2025/05/28(水) 20:06:37.11 https://asahi.5ch.net/test/read.cgi/newsplus/1748430397/ 【兵庫】「知事・元副知事の指示に基づき正当業務を…」斎藤知事の“側近”井ノ本氏の弁明書 知事は改めて否定 [ぐれ★] 2025/05/28(水) 17:08:14.82 https://asahi.5ch.net/test/read.cgi/newsplus/1748419694/
158 名前:デフォルトの名無しさん [2025/05/29(木) 08:13:06.72 ID:u1Xhema6a.net] z1=z+complex<int>(1,0); complex<float>とcomplex<double>の和は出来なくても良いと思うけど z3=hoge_cast<complex<double>>(z1)+z2;
159 名前:デフォルトの名無しさん [2025/05/29(木) 10:31:08.39 ID:Fzugd6EU0.net] AIチャットボットに有害な情報を出力させる手口が存在、研究者が危険性を指摘 2025-05-27 20:00 https://karapaia.com/archives/512716.html >> イスラエルの研究チームが、主要なAIチャットボットが「脱獄(ジェイルブレイク)」と呼ばれる手口で、安全制御を回避され、違法で有害な情報を出力してしまう可能性があることを示した。 >> ChatGPTのような生成AIには、ユーザーの指示に対して有害な回答をしないよう制限が組み込まれている。しかし、今回の実験では、その制限が比較的簡単にすり抜けられることが明らかになった。 >> 研究チームは、「これまで国家機関や犯罪組織に限られていた情報が、今やノートパソコンやスマートフォンを持つ誰にでも届く可能性がある」と警鐘を鳴らしている。 中略 >> ネットワークのハッキング法や犯罪行為であっても、手順を追って教えてくれるのだ。 中略 >> この報告は『arXiv』(2025年5月15日投稿)で閲覧できる。 ※電波攻撃音波攻撃詳細に方法を教えてくれる
160 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 10:55:19.72 ID:crgrWrcc0.net] >>155 C++で型を理解することは必須だし型を理解していたら特には難しくはない エラーは分かりやすくあるべきだとは思うけども
161 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 15:34:51.30 ID:KimJmnNH0.net] 『変数名はキーワード、アンダースコア( _ )で始まる名前、アンダースコア2つ( __ ) を含む名前以外は自由に名付けることができる。』 って某入門書にあったんですけど、予約語は別にして、アンダースコアは衝突抑止の念のためにという事ですよね。 private: int _size=0; なんて変数名によくしています。
162 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 15:46:46.20 ID:v8EevfYQM.net] >>161 それはやめた方がいい。理由は、 ・_xxx は、ライブラリの中やマクロで使う事が有るとされている。 ・__xxx は、コンパイラが内部でひそかに使って良いとされている。
163 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 15:47:49.43 ID:v8EevfYQM.net] 敢えて、そういう事をしたいなら、 int size_ = 0; のように、xxx_ や xxx__ は、まあ、やっていいのかも知れない。
164 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 15:49:35.81 ID:ozJD0VM40.net] アンダースコアは実装が使うから#define _sizeされても文句言えないしリンクエラーになるかもだし_Boolみたいに将来予約語になるかもしれない …ただ世の中にはアンダースコアの付いてない普通に変数名によく使われるような単語を平気で#defineしてくるクソヘッダーも多いので気にしてもしょうがない あとユーザー定義リテラルだけは例外で逆にアンダースコアで始めないといけない
165 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 15:58:31.71 ID:v8EevfYQM.net] そういえば、マクロの dummy 変数の習慣として、 #define MMMM(_x_,_y_) (_x_と_y_を使った表現) のように、_x_ や _y_ のように、前後に _ を付けた名前を使う というものがある、と聞いたことが有る。
166 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 16:26:19.54 ID:G9KWFEhx0.net] >>161 C++標準で予約されているから使ってはダメ。 https://learn.microsoft.com/ja-jp/cpp/cpp/keywords-cpp
167 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 16:30:44.26 ID:KimJmnNH0.net] どもです。勉強になります。 んじゃこれからは private: int data_=0; の感じで書くことにします。うん メンバ変数は他とは違うんだぞと思わせたくて。 ちなみに private: int data_(0); って書くとエラーになるのね。NSDMIの仕様でしたけ?
168 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 16:48:24.08 ID:ozJD0VM40.net] メンバ変数だけじゃなくメンバ関数も区別したくない?ってなるのでthis->を省略すると警告が出るスイッチこそ欲すい
169 名前:はちみつ餃子 mailto:sage [2025/05/29(木) 16:52:24.76 ID:SDgOXepR0.net] 単にアンダースコアで始まる名前というだけなら「グローバル名前空間で」処理系のために予約されているだけなのでグローバル名前空間以外で使う分には問題ない。 アンダースコアふたつが連続で含まれるか、アンダースコアで始まって大文字が続く名前はあらゆる用途で予約されてるので一般ユーザが定義 (宣言) してはいけない。 https://timsong-cpp.github.io/cppwp/n3337/global.names >>161 > 予約語は別にして 予約語という言葉をコンパイラ一般の用語として使っている資料は多いんだけど C++ の仕様としては予約語という言葉は使ってない。 いや、ちょっと使ってるんだけどはっきりした定義なく脚注で一度出てくるだけなので正式な用語じゃないと思う。 https://timsong-cpp.github.io/cppwp/n3337/lex.digraph#footnote-16 コンパイラが直接的に認識して文法上の特別な地位にあるような名前として「キーワード」があり、 それとは別にライブラリの構成上の規約として「予約名」がある。
170 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 17:07:12.49 ID:KimJmnNH0.net] >>169 > 単にアンダースコアで始まる名前というだけなら「グローバル名前空間で」処理系のために予約されているだけなのでグローバル名前空間以外で使う分には問題ない。 > アンダースコアふたつが連続で含まれるか、アンダースコアで始まって大文字が続く名前はあらゆる用途で予約されてるので一般ユーザが定義 (宣言) してはいけない。 ども了解です。基本外部で宣言する事はしないです。てかもうないですもんね。
171 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 20:50:35.18 ID:lOyNyril0.net] キーワード以外にもmainとかdefinedとか__file__とか__VA_ARGS__とか規格で特殊な意味を与えられてる文字列は色々あるけど その総称ってないんだよな
172 名前:デフォルトの名無しさん mailto:sage [2025/05/29(木) 23:49:20.86 ID:hr2gWeV00.net] C#やPythonのように、クラスのフィールドをアンダースコアで始めるのが一般的という言語もあるから、そちらから来るとそうしてしまうのかも? C++は統一的な指針はないけれど、GoogleのC++スタイルガイドでは value_ のように末尾にアンダースコアを付けるとしてるので、これで良いと思う 昔ながらのプロジェクトだと member の意味で m_value のようにするというのがあるけど、これはだいぶレガシー
173 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 01:16:49.62 ID:Jzn0K6cGa.net] ハンガリアン記法などというワードも、もはや若人には通じない時代となってしまったのだ・・・
174 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 01:39:44.98 ID:QwZ+U2hj0.net] 個人で書くときはハンガリアン(もどき)だしm_付けてるけどな サフィックスよりはプレフィックス付ける方がサジェストとか検索で絞りやすい 古いだのなんだのじゃなくて合理的ならなんでもいいと思うんだけどな
175 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 02:42:40.16 ID:qIE+EPsq0.net] m_も馬鹿っぽいけどな
176 名前:デフォルトの名無しさん [2025/05/30(金) 03:11:51.77 ID:DT1BzE420.net] FORTRAN方式こそ正義
177 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 03:32:04.17 ID:a8PtKm050.net] 前も似たようなこと言ったけど、馬鹿っぽいとか古いとか、ユーザーには何の利益にもならんぞ
178 名前:デフォルトの名無しさん [2025/05/30(金) 10:36:11.75 ID:9fSC83d40.net] 最近のIDEは色がついていてローカル変数とメンバー変数が区別できるようになってるね m_ などのプリフィックスは不要になってきてると思う
179 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 10:50:34.95 ID:XWQpoVmBa.net] m_ とか g_ は恥ずかしいね
180 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 11:00:52.20 ID:ORX18+JcM.net] >>179 そんなことない。
181 名前:デフォルトの名無しさん [2025/05/30(金) 12:05:13.31 ID:qi/53/kN0.net] 一目でメンバ変数かを判断できるようにするべきだ
182 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 12:09:34.75 ID:MmHFotTIM.net] >>172 >C++は統一的な指針はないけれど、GoogleのC++スタイルガイドでは value_ のように末尾にアンダースコアを付けるとしてるので、これで良いと思う でも、local auto 変数、local static 変数、メンバ変数と、(完全な)グローバル変数 global static 変数の少なくとも 5 種類あるので、 m_xxx, g_xxx, s_xxx の記法だと、区別しやすいが、 xxx_ だと難しい。
183 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 12:55:15.24 ID:ST0oYfQR0.net] グローバル変数は爆弾だから特別な名前を付けるべき データメンバーとローカル変数は(クラス内では)混ぜて多用されるから区別付けておくべき それ以外は好みでいいよ
184 名前:デフォルトの名無しさん [2025/05/30(金) 13:22:08.94 ID:XWQpoVmBa.net] >>168 判る
185 名前:デフォルトの名無しさん [2025/05/30(金) 13:22:41.29 ID:FTEPrInt0.net] 悪用されるのは当然です 高品質かつ高速な画像生成AI「FLUX.1 Kontext」が登場したので使ってみた、テキストと画像の入力に対応しアニメ風も実写風も生成可能 https://gigazine.net/news/20250530-flux-1-kontext-image-generation-ai/ 全てのAIの推論をどうやって導き出したかがわかるのでプログラムの改造がはかどる AnthropicがAIモデルの思考内容を可視化できるオープンソースツール「circuit-tracer」を公開 https://gigazine.net/news/20250530-anthropic-open-source-circuit-tracing/
186 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 13:23:32.32 ID:XWQpoVmBa.net] const は c_xxx ですね判ります
187 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 15:34:37.29 ID:uDWPTWtO0.net] m_ とか s_とかg_つける習慣はやめられないな スコープ明示は読みやすい この程度をIDEに依存したくないわ
188 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 15:35:56.97 ID:uDWPTWtO0.net] あと初見でautoだらけとかチェーンしまくるコードも読みにくくてしゃあない 書いた本人は無駄なくせて満足だろうけど、ある程度の冗長性は許容したほうが読みやすいし事故を防げる場合もあるんだよな
189 名前:デフォルトの名無しさん [2025/05/30(金) 15:42:21.31 ID:418TV5iU0.net] >>188 無駄をなくすのが目的じゃなくて 情報の重複を避けてるんじゃないかな?
190 名前:デフォルトの名無しさん mailto:sage [2025/05/30(金) 16:01:45.27 ID:uDWPTWtO0.net] ちなみにautoでしか書けないやつとかあるのはわかってるよ
191 名前:デフォルトの名無しさん mailto:sage [2025/05/31(土) 02:34:30.00 ID:s94c4VR80.net] イテレータの型なんかはauto使わず律儀に書く方が間違ってる
192 名前:はちみつ餃子 mailto:sage [2025/06/02(月) 09:16:11.21 ID:aX5lnsqr0.net] Stroustrup は名前に型やスコープなどの情報を埋め込むのは否定的だ。 https://www.stroustrup.com/bs_faq2.html#Hungarian 部分的に便利な場合があることは認めていて、型名を大文字で始める (アッパーキャメルケース) こととマクロは全て大文字にすることを紹介してる。
193 名前:デフォルトの名無しさん [2025/06/02(月) 14:50:23.57 ID:DSKTrfoza.net] リファクタリングの途中でルールにずれるたびに名前変えてると効率悪過ぎですし
194 名前:はちみつ餃子 mailto:sage [2025/06/02(月) 15:57:32.89 ID:aX5lnsqr0.net] 出自が違うライブラリを組み合わせて使うのもよくあることだし、一貫した規約を保つのは難しいな。 D&E の 9.4.4 ではツールがより賢くなった理想的な開発環境について触れている。 プログラミング言語がテキスト表現を持つのはプログラマに対するインターフェイスに過ぎず、プログラムがテキストである必要はないという論だ。 ツール内部では抽象的なデータ構造として持っておいて必要に応じて (各プログラマの好みに合わせて) テキスト表現を調整するような仕組みにすれば名付けのスタイルなんかどうでもよくなる。
195 名前:デフォルトの名無しさん [2025/06/02(月) 16:43:02.90 ID:wUlZIBZbH.net] あのー、話をぶったぎってすみません。 >>155 の関数の戻り値は decltype(auto) じゃなくて 単純にautoでいいです よね? RVOを使っているから値返しで良いし、参照返しも okなdecltype(auto)は過剰スペックなような。
196 名前:デフォルトの名無しさん [2025/06/02(月) 16:52:31.25 ID:Ca4PuVUf0.net] シャープ、PythonによるAIデバイス向け高位合成ツールをオープンソースで公開 https://news.mynavi.jp/techplus/article/20250602-3343055/ 博報堂メディカル、生成AIを用いた審査業務効率化ソリューションを開発 [ https://news.mynavi.jp/techplus/article/20250602-3342950/ 「AIをより魅力的にする戦略」がAIチャットボットに「薬物使用を促す」といった有害な考えを強化させる可能性があると研究で判明 https://gigazine.net/news/20250602-ai-chatbots-user-influence-attention/
197 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 20:55:46.15 ID:ET4i7BARM.net] >>192 >Stroustrup は名前に型やスコープなどの情報を埋め込むのは否定的だ。 彼の「机上の空論気質」がそこにも現れている。
198 名前:デフォルトの名無しさん mailto:sage [2025/06/02(月) 22:27:52.64 ID:ET4i7BARM.net] 昔、BASIC言語で、数値(単精度浮動小数点)はAの様に、文字列は A$ の様に 書くのは分かりやすかったな。 今も、数値はx,y,a,bやi,j、文字列変数は、strText と書いた方が分かりやすく感じる。
199 名前:デフォルトの名無しさん [2025/06/02(月) 23:11:50.34 ID:wUlZIBZbH.net] >>195 = >>155 です。
200 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 01:42:24.38 ID:ue5SdiDx0.net] 型を変数名に含めるのは型を大量に作るのが当たり前になった今では速攻破綻する。文字列だけでも何種類あるよ スコープはC++では有限だからまあよしというか、マクロという凶悪大スコープなやつだけは隔離しないとやってられない
201 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 03:15:04.87 ID:QDwFpnnH0.net] >>192 最後に「細かいことにこだわるよりも、一貫してルールが守られていることの方が重要」と結んでるのを皆ガン無視してるな
202 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 03:19:00.18 ID:0VgbeSrB0.net] >>201 それは言うまでもなく前提の話だと思うわ 今はその前提の話の先の話をしてるんだろうと俺は大人しく見てる
203 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 05:25:56.96 ID:ZBtI7lM80.net] cの範疇になるけどsignedとunsignedが変数名でわかるのは助かるけどな コンパイラのwarning任せは心もとない
204 名前:デフォルトの名無しさん [2025/06/03(火) 06:02:38.05 ID:h7iZDaPS0.net] 変数は日本語で
205 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 09:23:02.69 ID:y5vobhTd0.net] 最初から言語で縛ってればこの議論すら発生してない
206 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 10:34:45.25 ID:h0O9iP1b0.net] MINDでしたけ?
207 名前:はちみつ餃子 mailto:sage [2025/06/03(火) 11:33:27.00 ID:P/OxecZX0.net] >>203 数値については変数の型そのものよりも演算のときに暗黙に型変換されることがあるのが C++ で問題になりやすいところだと思う。
208 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 14:29:05.51 ID:tpA/FWUpM.net] >>200 >文字列だけでも何種類あるよ だからこそ、統一的に接頭辞で区別すると便利だ。
209 名前:デフォルトの名無しさん [2025/06/03(火) 14:51:27.14 ID:7K3A6UIY0.net] XXXsよりXXXList (またはXXXVector)だ!
210 名前:デフォルトの名無しさん [2025/06/03(火) 16:18:33.92 ID:h7iZDaPS0.net] DNAはどうなってんだろうな 4進数の羅列だけで、変数持ってないし 直接アドレス指定どうやってんだよ? peek pokeは誰が担ってんだよ
211 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 20:04:19.87 ID:/7yVoUF50.net] >>210 タンパク質の合成とか調べなされ。mRNAとかtRNAとか。
212 名前:デフォルトの名無しさん [2025/06/03(火) 20:22:12.60 ID:ETf4Zm6Cd.net] >>155 虚数は実在しない
213 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 21:01:25.55 ID:/jgzz5v70.net] >>212 「虚数」みたいなラベルに騙されている。 「数字2つのタプルで、四則演算の定義されたもの」で、虚数みたいな演算を持つものと考えればいい。
214 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 21:15:47.28 ID:ZBtI7lM80.net] >>212 数学を誤解してるやつの典型だな 存在するとかしねーじゃないっての
215 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 21:28:00.78 ID:h0O9iP1b0.net] 3次方程式の解の方程式に虚数が出てくる意味ですよ。しったか
216 名前:デフォルトの名無しさん [2025/06/03(火) 21:43:38.26 ID:ZVCnTieoa.net] そんなこと言ったら0も-1もねーよ
217 名前:デフォルトの名無しさん mailto:sage [2025/06/03(火) 21:53:33.79 ID:bcTkTLKWa.net] >>213 だから複素数がベクトルとして機能するんだよね
218 名前:デフォルトの名無しさん [2025/06/03(火) 22:37:53.10 ID:SMbzrRmIa.net] >>210 crisper-cas-9
219 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 04:46:09.37 ID:GWnctGWc0.net] 質問なのですが double qax(int a, long b) { ... } double quux(int a, long b) { ... } std::function<double(int, long)> gfred= qax; としたときに、gfred が qax と同じだが quux とは違う、というのを判定するにはど うしたら良いの?
220 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 05:46:56.09 ID:EsSRpHcz0.net] >>217 正確には、+と*の演算による複素数同士の関係(構造)が複素数の本質。 「虚」とか、本質とは関係のない単なるバズワード。
221 名前:はちみつ餃子 mailto:sage [2025/06/04(水) 09:29:46.05 ID:XvRleYyH0.net] >>219 元の型で取り出すためのメンバ関数テンプレートとして target が使える。 ↓こういうことがしたいのかな? https://wandbox.org/permlink/MpTFLrezqJE06Myb
222 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 09:58:31.17 ID:pOYKhOcIa.net] >>219 https://ideone.com/70WOig
223 名前:デフォルトの名無しさん [2025/06/04(水) 20:04:15.01 ID:Ao4InlGx0.net] GoogleのGemini 2.5で日本語を含む多言語の音声生成が可能に https: //gigazine.net/news/20250604-google-gemini-native-audio/ 無料で超絶リアルな3DCGキャラを作成&動かせるゲーム開発ツール「MetaHuman」の一部がUnreal Engine 5.6に統合 https: //gigazine.net/news/20250604-unreal-engine-5-6-metahuman/ ついにAndroid版Photoshopのベータ版が登場、無料でAIによる画像生成やレイヤー編集を利用可能 https: //gigazine.net/news/20250604-adobe-photoshop-android/ あなたは「生成AI製フェイク画像」を見抜けますか?--判別は"ほぼ無理”な時代、来歴証明が重要なワケ https: //japan.cnet.com/article/35233768/ ChatGPT無料版でも「会話履歴を踏まえた回答」が可能に、ただし最近の会話のみ https: //japan.cnet.com/article/35233795/ xAI「Grok」18禁モード無料開放 けしからん会話可能に 日本語OK https: //ascii.jp/ai/
224 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 23:13:17.20 ID:GWnctGWc0.net] >>221 なるほど…… >>222 なるほど…… しかしstd::function<T>::target()で関数オブジェクトも扱えるらしいとわかったのでやってみたら こちらは意図通り動かず釈然とせんぬ…… https://ideone.com/VM9Vh0 24行目〜26行目のif文の動きが思ってたのと違う…… 一体どうすれば……orz
225 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 23:18:49.86 ID:GWnctGWc0.net] 24行目〜26行目のif文の動きが思ってたのと違う……
226 名前:デフォルトの名無しさん mailto:sage [2025/06/04(水) 23:27:49.48 ID:GWnctGWc0.net] とりま↓こうしたら逝けた…… https://ideone.com/sug3S4 んまーfooのインスタンスの寿命を考えたらstd::function<T>はfooをコピーする実装になるという予想の下に、 fooを構築したときのthisをメンバm_objIDに記憶させて、fooの等値演算はm_objIDの比較で行うようにしたらイゴイタ…… 5chは漏れの日記帳……
227 名前:はちみつ餃子 mailto:sage [2025/06/05(木) 03:33:47.67 ID:lIQfbdfd0.net] >>226 この場合に呼び出されるコンストラクタは template<class F> function(F f); なのでコピーされることはこのシグネチャから自明。 https://timsong-cpp.github.io/cppwp/n3337/func.wrap.func.con std::function は (同じ形式で呼び出しが可能なら) 違う型のオブジェクトを統一的に扱うことが目的なので入れる型を限定してしまうような構造は std::function を使う甲斐がない。 どういう状況で比較しようとしてるのかわらんけど、そういうのが必要になってるなら設計が根本的に失敗してる可能性を疑う。
228 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 08:27:57.44 ID:ExyrcTL10.net] >>227 レスdクス、 >コピーされることはこのシグネチャから自明。 なるほど…… >std::function は (同じ形式で呼び出しが可能なら) 違う型のオブジェクトを統一的に扱うことが目的なので入れる型を限定してしまうような構造は std::function を使う甲斐がない。 それはそう >そういうのが必要になってるなら設計が根本的に失敗してる可能性を疑う。 これはスレッドの終了時にコールバック関数を呼ぶ仕組みにおいて、 コールバック関数とコールバックを待機する関数の組み合わせが本当に正しいか待機関数側でチェックするのに使い鯛、 (コールバック関数は自由に登録できるようにする必要があり、 コールバックされたとき単に処理を進めるだけで待機の解除をなんら行わないコールバック関数とかもあるので 対応を間違ったらバグ
229 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 08:28:31.27 ID:ExyrcTL10.net] コールバック関数の自由な登録というのをstd::function<T>として登録することを考えて居たけんども 素のstd::function<T>ではチェックが自由にできないということがわかりた…… MSVCとかで関数を入れたstd::function<double (int, long)>に対し関数オブジェクトfooとしてtarget<foo>()するか 反対のことをしたらcatchできない例外が発生すた、(多分構造化例外か何かでSTLの仕様的にはおそらく未定義動作 故に素のstd::function<T>を使おうとする限り、入れるブツをdynamic_cast可能な関数オブジェクトに限定するとかしないと 手の打ちようが無いorz 現実解はstd::function<T>をwrapした「コールバック関数クラス」の創設……
230 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 11:16:19.85 ID:8BEUFbRj0.net] 別に質問すんのも気付いた事を書くのも(手短になら)いいんだけどさ >5chは漏れの日記帳…… ええ加減にせえよお前マジで 開き直ってんじゃねえぞ
231 名前:はちみつ餃子 mailto:sage [2025/06/05(木) 12:10:53.33 ID:BNqgyRrD0.net] >>229 target で指定した型と実際に入っている動的な型が合致しない場合はヌルポインタが返される仕様になっていてそれ自体は問題ない。 実際のコードがどうなってるか示されていないけれど、 >>226 の延長線のようなコードだとしたらヌルポインタ返ってきたときヌルポインタに単項 * を適用していることになるし、更にはそのメンバ関数である operator== を呼び出したりデータメンバ m_objID にアクセスしたりしてるのが全部ダメ。
232 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 13:25:12.77 ID:EjJmkkft0.net] >>229 あんまり深く理解してないけど コールバックの責任範囲(待機の解除とか)が違うのを明確に管理したい ->責任範囲の違いごとに基底クラスを用意して、コールバックは派生クラスで実装させる。 みたいなガチガチの管理がいいんじゃないんかね。 コールバック実装側にも管理する義務を押し付けられるし、基本的なフレームワーク(待機の解除手順とか)は基底クラス側で実装できる。
233 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 16:59:25.81 ID:I5agSXi50.net] 単純なんですが、わからんので教えてください。 #include <iostream> int main(){ std::cout <<"hello"s<<std::endl; } がエラーになります。なんか勘違いしてます?sは無理につけないほうがいいのかな?! $ g++ -Wall -Wextra -std=c++23 -O2 -DGNU_SOURCE main.cpp -o main g++は11.4.0
234 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 17:33:40.39 ID:Ze0QqwpuM.net] >>233 #include <string> using namespace std::string_literals;
235 名前:はちみつ餃子 mailto:sage [2025/06/05(木) 17:37:36.07 ID:BNqgyRrD0.net] >>233 結論から言うとこういう感じ。 #include <iostream> #include <string> int main(){ using namespace std::literals::string_literals; std::cout <<"hello"s<<std::endl; } s はヘッダ string の中の std::literals::string_literals という名前空間で定義されているからこういう形で using してからじゃないと使えない。 この単純なケースだけを見れば s を付ける利点は何もないけど状況次第。
236 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 17:38:38.46 ID:I5agSXi50.net] >>234 早速の返信ありがとうございました。勉強します。mOm
237 名前:デフォルトの名無しさん mailto:sage [2025/06/05(木) 17:40:53.81 ID:I5agSXi50.net] >>235 御意 mOm 色々あるのですね・・・
238 名前:はちみつ餃子 mailto:sage [2025/06/05(木) 18:41:08.81 ID:BNqgyRrD0.net] 他のいくつかの言語 (Java とか C# とか) の感覚で C++ を見ると普通の文字列リテラルの型が std::string ではなく char[] なのは引っかかりがちなところかもしれない。 常に s を付けるとそういう引っかかりを無くせるので不必要でも一貫して s を付けるような運用は悪くはないのかもしれない。 基本的にはちゃんと理解して使い分けて欲しいけどね。
239 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 01:59:21.81 ID:8e7E0Zg00.net] emplace_backなんて便利なものあったのかよ なんで教えてくれなかったの
240 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 02:24:44.55 ID:jKOd5e+0a.net] 最初にちゃんと教えたじゃない
241 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 04:07:51.58 ID:tL+z2F5g0.net] 便利ってのはちょっと違うだろ
242 名前:デフォルトの名無しさん mailto:sage [2025/06/07(土) 08:30:18.62 ID:6XhFO67c0.net] う 知らなかった。rvalue Refでの実装ですよね。30%以上速くなってるみたいな。
243 名前:デフォルトの名無しさん [2025/06/11(水) 00:24:35.36 ID:PujA5y+40.net] プログラミングなんて勉強して意味あるのかな…? AIに全部もってかれそうなのに…
244 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 00:26:46.70 ID:BmOhOZog0.net] 面白いからやってるだけでは?
245 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 00:42:35.30 ID:LotBJsEG0.net] >>243 プログラミング言語に限らず自然言語も 言語の位置づけが変わったことを踏まえた 勉強が必要になったと思う
246 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 01:19:10.27 ID:oPVwdzBR0.net] こういうのは勉強したくない言い訳だから意味を答えても無駄だって聞いた
247 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 05:22:56.57 ID:X5AhUIPs0.net] 頭使ってPG組むのは自分のためなんよ なんでもAIに頼ってたら馬鹿まっしぐらで緊急時になにもできない人間に成り下がってしまうんだぜ
248 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 06:27:29.37 ID:LS0N9soX0.net] >>243 お前実際にAIでプログラミングしてないだろ? 実際やってみたらそんな感想にはならない
249 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 07:39:00.61 ID:1mMnjHQa0.net] AIがいいプログラミング出来るように開発しなきゃならないね。
250 名前:はちみつ餃子 mailto:sage [2025/06/11(水) 09:03:36.56 ID:AWy+SoY40.net] >>243 上司の指示が支離滅裂だったらプログラミングできるか? AI にとってのお前は指示を出す上司だ。
251 名前:デフォルトの名無しさん [2025/06/11(水) 09:22:57.75 ID:IDIyuYFJ0.net] AIプログラミングってストレス溜まるらしいね AIの作成したコードに誤りがないかを人間が確認して誤りがあれば修正を指示する 人間がコードを読んでバグを見つけないといけないケースもある まるで出来の悪い部下を教育しているようでかなりの根気が必要 自分でコード書くほうがストレスフリーで楽だよ
252 名前:デフォルトの名無しさん [2025/06/11(水) 10:00:04.85 ID:7/IL82s+0.net] 新人よりはずっといいコード作るのと、速度が自分と比べても圧倒的ゆえに、プロトタイプ作るのはもう任せてしまってる まだ全部任せるのは無理だけど、5年前に今の状況伝えても笑って信じない程度には有能
253 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 10:37:11.25 ID:4plX/rhp0.net] >>250 適宜質問して言質取ればいいんだけどな 上司が無能でもなんとか出来るのが人間
254 名前:はちみつ餃子 mailto:sage [2025/06/11(水) 10:58:38.63 ID:AWy+SoY40.net] AI が思ったより高性能なのは確かだが、これからの性能の伸びは急激に鈍化する可能性が高い。 性能の高い AI には単純に巨大な計算能力と記憶が必要で、更にはそれを支える電力が要るという物理的限界があるから。 量子コンピューターなど、物理のほうでなんらかのブレイクスルーがあれば更なる飛躍が望めるかもしれないけれど…… しばらくは今程度の AI との付き合い方を社会のほうが学習して折り合いをつけていく形になると思う。
255 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 11:15:11.18 ID:HZCA0d+40.net] 知らん事に対してあまり分かったような事言わない方がいいぞ
256 名前:デフォルトの名無しさん [2025/06/11(水) 11:39:04.50 ID:sSZ9OAEc0.net] 246で終わってて以降はいつもの蛇足
257 名前:デフォルトの名無しさん [2025/06/11(水) 12:34:23.44 ID:5IFZnh9v0.net] >>251 テストケースをちゃんと作ってればAI任せでもかなりできる
258 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 13:08:01.74 ID:LS0N9soX0.net] 現状AIにお任せで作るテストケースなんて低品質のザル それに何をやらせるにしろコンテキストサイズ小さすぎで少し規模でかくなったらすぐ鳥頭状態で延々間違い続ける まだまだ技術は進歩するだろうがエンジニア不要なんて当分ならない 仕事のやり方が変わるだけ
259 名前:デフォルトの名無しさん [2025/06/11(水) 13:48:04.08 ID:F2et1oFa0.net] 何万回も試行させてバグ発見とバグ取りまでAI任せでいいじゃん それを人がやってるのはアホすぎるw 道具使えてない
260 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 13:59:18.90 ID:LS0N9soX0.net] やってから言え
261 名前:はちみつ餃子 mailto:sage [2025/06/11(水) 14:10:23.54 ID:AWy+SoY40.net] >>259 価格を見てから同じこと言える? そこそこ高めだがそれでも黒字化できてるサービスはほとんどないみたいだぞ。
262 名前:デフォルトの名無しさん mailto:sage [2025/06/11(水) 14:41:37.02 ID:LotBJsEG0.net] 馬鹿と鋏とAIは使いようだよ
263 名前:デフォルトの名無しさん [2025/06/11(水) 15:02:45.49 ID:jtrpcw1X0.net] 超音波と電波は頭蓋骨貫通する 傷害事件や殺人事件の被害が出ているのですが調査可能ですか 「最近もの忘れ多いかも」”超音波”が効く未来の脳ケアガジェットに期待 2025.06.11 12:00 https://ascii.jp/elem/000/004/268/4268478/ >>サウンドウェーブイノベーション株式会社が開発中の「LIPUS-Brain」という医療機器だ。頭に当てるだけで脳を優しく刺激してくれるらしい。仕組みは「低出力パルス波超音波(LIPUS)」という特殊な音を使って、脳内の血流や神経の働きをサポートするというもの。 >> 「脳に超音波って大丈夫?」と思うかもしれないが、これは低出力&非侵襲。要は、“切らない・飲まない・痛くない”系の治療機器だ。軽症アルツハイマー病への有効性が示唆されており、2022年には厚生労働省から「先駆的医療機器」のお墨付きももらっており、現在も治験が進んでいる。 テラヘルツ波で内耳蝸牛を観察、難聴など耳の病気の診断に期待 2025年06月11日 12時00分更新 https://ascii.jp/elem/000/004/278/4278126/ >> 難聴の多くは、耳の奥にある音をつかさどる器官である内耳蝸牛(かぎゅう)の障害が原因とされています。内耳蝸牛は頭蓋骨深部にあるため、光計測では骨を透過できず、X線撮影では被ばくのリスクがあり、内部の観察が困難です。 >>可視光と電波の中間帯に位置するテラへルツ波は、内部を被ばくさせずに観察できることから、安心安全な技術として注目されています。しかし、波長は約300マイクロ(マイクロは100万分の1)メートルであり、それより小さなマイクロメートルレベルの対象物は観測できませんでした。 >>マウスを用いた実験により、テラへルツ波を利用して内耳蝸牛を観察しました。研究チームは、非線形光学結晶にフェムト(フェムトは1000兆分の1)秒オーダーの短い時間だけ強いレーザー光を照射すると、テラヘルツ波が局所的に発生して点光源として扱えることに着目。点光源から発生したテラヘルツ波が、蝸牛内部で反射して戻ってくるまでの時間を測定して距離や形状を調べる独自の手法と、機械学習を利用した画像解析法を開発しました。 >>これらを適用することで、内耳蝸牛内部の3次元構造をマイクロメートルレベルで初めて可視化し、断面観察にも成功しました。
264 名前:デフォルトの名無しさん [2025/06/11(水) 21:22:42.95 ID:n2ChAYWba.net] このスレでやるな
265 名前:デフォルトの名無しさん mailto:sage [2025/06/12(木) 00:08:06.33 ID:ftTL3ileM.net] >>261 AGIをやるためには、ものすごい沢山の計算コアを集めたデータセンター が必要だから、初期投資と電気代が凄い。だから、世界に少ししか作れない。 となると、みんなでそれを時分割して使うことになり、性能は 人ひとりより落ちることになろう。
266 名前:デフォルトの名無しさん mailto:sage [2025/06/12(木) 00:41:06.20 ID:ForjZNXcd.net] スレ違い。
267 名前:デフォルトの名無しさん mailto:sage [2025/06/12(木) 19:58:06.94 ID:/PCxqnPyM.net] AIに聞いてみたら、にほんのC++プログラマは、約50,112人だと 答えた。C++の世界の使用者数は約1,160万人だと言われているのに、 本当だろうか? なお、日本の職業ゲームプログラマは数万人とされる。
268 名前:デフォルトの名無しさん mailto:sage [2025/06/12(木) 20:10:27.47 ID:GCnXcRjG0.net] ↑ど素人のAIの使い方
269 名前:はちみつ餃子 mailto:sage [2025/06/13(金) 09:36:20.53 ID:4zf9vL2U0.net] 調査に AI を使う場合は出典なり推論過程なりを報告させて検証しろ。
270 名前:デフォルトの名無しさん mailto:sage [2025/06/13(金) 10:08:04.05 ID:yXjkXUTe0.net] AIの回答を鵜呑みにするのは、科学の大原則となる検証可能性を自ら捨てる愚行だからなぁ。 AIに限った話じゃないけど、世の中には権威に訴える論証やら人身攻撃やらが氾濫している。常に注意しないといかん。
271 名前:デフォルトの名無しさん [2025/06/13(金) 11:11:02.52 ID:ATYXeDVy0.net] でもこれまでもAIの代わりに本を鵜呑みにしてるんだよね 本を批判的な視点で見れるやつはAIでも見れるし 物質は原子から出来ていて原子は原子核と電子から出来ていると義務教育で習う でも自分で検証する者は殆どおらずただ受け入れるだけ AIも物質は原子から出来ていると答えてそれを受け入れる
272 名前:デフォルトの名無しさん mailto:sage [2025/06/13(金) 11:42:29.95 ID:T6ZAL6CyM.net] では、これは何? https://hr-tech-lab.lapras.com/knowledge/research-report/hr-data-analysis-3/#i-6 法人向け採用サービス「LAPRAS」 プログラミング言語別:エンジニア数 プログラミング言語 エンジニア数(人) JavaScript 218,880人 HTML/CSS 186,624人 Python 144,576人 TypeScript 123,264人 C 110,592人 Ruby 108,864人 Go 96,768人 Java 86,400人 Bash/Shell 72,000人 PHP 70,272人 C++ 50,112人 Rust 37,440人 SQL 35,712人 Swift 34,560人 C# 33,408人 Kotlin 25,344人 Dart 10,944人 Lua 10,368人 PowerShell 5,184人 Assembly 3,456人
273 名前:デフォルトの名無しさん mailto:sage [2025/06/13(金) 12:01:07.15 ID:IXAej3i00.net] Rustってどうなん
274 名前:デフォルトの名無しさん [2025/06/13(金) 12:01:24.74 ID:eyPBizg10.net] >>272 読んできたが、転職市場にいるC++エンジニアの数(推計)であって、日本のC++エンジニア数じゃないよね せめて中身読まんと一生使えないやつ扱いだぞ
275 名前:デフォルトの名無しさん mailto:sage [2025/06/13(金) 12:11:49.34 ID:T6ZAL6CyM.net] github の検索機能を使ってリポジトリ数を調べてみたら、以下の様になった。 この数値が正確に何を意味するのかは不明 : (1) language:JavaScript : 23M results (2) language:Java : 14.3M results (3) language:Python : 13.5M results (4) language:C# : 4.5M results (5) language:C++ : 4.1M results (6) language:PHP : 4.1M results (7) language:C : 2.7M results (8) language:Ruby : 2.7M results (8) language:Rust : 552k results (9) language:Lua : 338k results (10) language:Perl : 158k results (11) language:WebAssembly : 1.7k results (12) language:Wasm : 1.6k results (13) language:Unity : 0 results
276 名前:デフォルトの名無しさん mailto:sage [2025/06/13(金) 12:21:35.94 ID:E42DVH7Kp.net] 日本の職業C++エンジニアは少ない、みたいなのはおそらく事実だろ ここも昔はプロが大勢居たが、今や趣味グラマか競プロしかやった事ない奴が牛耳ってるし 言ってる内容が正しければそれでもいいんだけどね
277 名前:はちみつ餃子 mailto:sage [2025/06/13(金) 12:27:18.04 ID:4zf9vL2U0.net] >>274 いや、 LAPRAS が調べた言語別の割合を日本の IT エンジニア数全体に当てはめてる。 推計ではあるが 50112 人は日本の C++ エンジニアの数だ。 言語ごとに転職志望傾向に大きな違いがあればあまり当てにならない推計ではある。 ウェブ系のほうがかなり移動が激しいような印象はあるし、数倍程度の幅はあってもおかしくないかな。
278 名前:デフォルトの名無しさん [2025/06/13(金) 12:39:15.12 ID:eg/YBi4J0.net] >>271 電子が原子核の周りを飛び回ってる絵を教科書に載せるのはそろそろ禁止するべきだね
279 名前:デフォルトの名無しさん mailto:sage [2025/06/13(金) 12:40:04.56 ID:eg/YBi4J0.net] もっともらしい嘘を言わせると超一流だよなωωω=2πf
280 名前:デフォルトの名無しさん [2025/06/13(金) 13:23:08.46 ID:YG6TxuJTM.net] >>277 1.「その中でも今回は、LAPRASのDBに登録しているユーザーのうち、 ・Web上に積極的に発信している ・各言語のタグを一定レベル以上で持っている という条件を満たすエンジニアの方々4万人以上を対象に「各言語のタグを一定レベル以上で持っている方が、全体の人数のうち何%いるか?」を集計 してみました」 2.「以下の日経クロステックの記事によると、2025年時点で、日本国内のITエンジニアの人数は約144万人と推計されています」 3.「レバテック株式会社が実施した「レバテックIT人材白書2025」の調査によると、IT人材の約4割が「転職活動中」または「転職を検討中」と回答しています。」 4.「この割合を2025年のITエンジニア総数144万人に適用すると、転職市場にいる人数は約57.6万人と推定されます。 今回のLAPRASの調査からわかった「プログラミング言語別エンジニア数」の割合を上記の人数に適用すると、採用マーケット全体でのそれぞれの母集団の数は次のように推計できます」 とあるので、・・・」 となっていて、 1 に各言語を一定レベルのスキルで持つ人材(?)の分布があり、 2 より 日本の2025年のITエンジニア総数 = 144万人 2 と 3 を掛け算して、転職市場にいる人数 = 約57.6万人・・・(a) となって、(a)に1の分布を掛け算したのが、>>272 らしい。 つまり、>>272 は、57.6 万人の中での人口分布。 そして、144 / 57.6 = 2.5 だから、日本の ITエンジニア全体では >>272 のそれぞれを 2.5 倍しただけのスキル保持者がいる、と いう主張になるらしい。 但し、7年くらい前(?)の日経の調査では、日本では、 「プロ」に限れば C/C++ の使用者数が TOP らしいから、 この結果とはまた異なりそうだが。
281 名前:デフォルトの名無しさん [2025/06/13(金) 13:34:16.83 ID:/pNq5IL+0.net] 業務でC++使うこともほとんどなくなった いまだにC++が一番得意と言い張ってはいるが、今の俺を分類するならJava/JavaScript技術者かもしれん
282 名前:はちみつ餃子 mailto:sage [2025/06/13(金) 14:15:13.72 ID:4zf9vL2U0.net] >>280 その解釈だと「採用マーケット全体」と「転職市場」を同一視していることになるな。 いずれにしても何を指してるんだかよくわからんことにかわりないけど。
283 名前:デフォルトの名無しさん mailto:sage [2025/06/13(金) 14:35:38.83 ID:YG6TxuJTM.net] >>282 144万人は「日本のITエンジニアの総数」。 「採用マーケット全体」という言葉の意味とはちょっと違うと思うが。
284 名前:はちみつ餃子 mailto:sage [2025/06/13(金) 15:01:27.93 ID:4zf9vL2U0.net] >>283 更にその「母集団」とも言ってるでしょ。 抜き出したサンプルが何を代表しているつもりなのかよくわからん…… >>272 の数値を合計するとだいたい 146 万ということになるから日本全体の数だと私は判断してたんだけど、 ひとりが複数言語を使うのも普通のことだしなぁ…… 「一定レベル以上」がどのくらいの水準のことを言っているのかでもかなり変動するだろうし。
285 名前:デフォルトの名無しさん [2025/06/13(金) 15:01:40.97 ID:/pNq5IL+0.net] AIでも有料モデルで確認した結果がこちら https://i.imgur.com/z6pRnTk.png https://i.imgur.com/3Wg84ZT.png
286 名前:はちみつ餃子 mailto:sage [2025/06/13(金) 15:02:59.82 ID:4zf9vL2U0.net] 全部が一定レベル以下の人は集計から排除されていると考えると その割合を全体数 (転職市場にせよ日本全体にせよ) に適用するのが妥当とも思えないよな。
287 名前:デフォルトの名無しさん [2025/06/13(金) 15:03:36.94 ID:/pNq5IL+0.net] >>284 上に割合あるんだから、8.7%に56万かけりゃすぐに違うってわかるのでは?
288 名前:はちみつ餃子 mailto:sage [2025/06/13(金) 15:49:17.20 ID:4zf9vL2U0.net] ああ、割合が最初に書いてあったのか。 全然読めてなかった。格好悪いな
289 名前:デフォルトの名無しさん mailto:sage [2025/06/13(金) 22:37:54.95 ID:22avhnRdM.net] >>272 「集計結果」のところで、JavaScriptが38%というものから 始まっている「分布図」があるが、合計してみると100%を優に超えていた。 だから、 >>284 > >>272 の数値を合計するとだいたい 146 万ということになるから日本全体の数だと私は判断してたんだけど、 > ひとりが複数言語を使うのも普通のことだしなぁ… ということになっているらしい。 つまり、57.6 万人 に、それぞれの比率を掛けた数字になっているが、 比率自体の合計が 100% を超えているので、各言語ごとの「人数」 を全部足すと、57.6 万人を超えている。 しかし、日本のITエンジニア全体の人口は 144 万人で、 144 / 57.6 = 2.5 であることから、実際の各言語後との「人数」は、 2.5 倍する必要がある、ということになる。
290 名前:デフォルトの名無しさん [2025/06/14(土) 18:57:21.60 ID:Z47ni+e7a.net] 最近のプログラマは割り算はおろか掛け算も出来ないらしい
291 名前:デフォルトの名無しさん [2025/06/14(土) 19:20:56.16 ID:TLqczxub0.net] mRNAワクチンの“新たな懸念”接種済み妊婦の子どもに「異常タンパク質構造」血中で確認★2 [Gecko★] 2025/06/14(土) 15:48:24.59 https://asahi.5ch.net/test/read.cgi/newsplus/1749883704/ ・ワクチン問題になっている
292 名前:デフォルトの名無しさん mailto:sage [2025/06/14(土) 19:34:05.95 ID:8e4YyHKjM.net] >>290 いまの議論で、そんな人は誰もいなかったんだが。
293 名前:はちみつ餃子 mailto:sage [2025/06/14(土) 21:54:18.62 ID:k1IJmlZ/0.net] Teratail とか Qiita とか Stackoverflow とかの質問も減ってる気がするなぁ。 これは C++ の衰退のせい? それともみんな ChatGPT とか Gemini に聞いてんの?
294 名前:デフォルトの名無しさん mailto:sage [2025/06/14(土) 23:01:15.38 ID:suk2ABkrM.net] >>293 >Teratail とか Qiita とか Stackoverflow とかの質問も減ってる気がするなぁ。 それはどうやったら体感できるの?
295 名前:デフォルトの名無しさん [2025/06/15(日) 00:11:57.49 ID:bHsxd1q/H.net] C++の知識というか、ノウハウが一応行きわたっているからだと 思う。と言っても新人は習得に手こずるだろうけど、そばに適切 に指導してくれる先輩がいれば大丈夫。あくまで適切な指導をして くれる先輩だけど。ラーメン屋の店主みたいな奴だと地獄。
296 名前:デフォルトの名無しさん [2025/06/15(日) 00:11:58.07 ID:bHsxd1q/H.net] C++の知識というか、ノウハウが一応行きわたっているからだと 思う。と言っても新人は習得に手こずるだろうけど、そばに適切 に指導してくれる先輩がいれば大丈夫。あくまで適切な指導をして くれる先輩だけど。ラーメン屋の店主みたいな奴だと地獄。
297 名前:デフォルトの名無しさん [2025/06/15(日) 00:12:31.42 ID:bHsxd1q/H.net] ありゃあ、2つ入力されちまったい
298 名前:デフォルトの名無しさん [2025/06/15(日) 00:37:51.57 ID:bHsxd1q/H.net] >>290 いまどき8bitシフトするために256で割る意味がわかる人いるかなあ
299 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 01:26:12.38 ID:eDpwS0UO0.net] >>296 日本のソフトウェアIT業界なんてラーメン屋レベルでしょ だからIT後進国でしょ
300 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 03:09:45.52 ID:4MduE0B70.net] 海外のラーメン屋はもっとレベル高いんか
301 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 08:13:33.37 ID:vQtYxwCW0.net] 国語力w
302 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 09:32:37.19 ID:sxaow1g9M.net] 地方の求人情報だと java,c,c++.javascript,typescript位の求人しかない(昔はこれにVB,COBOLが加わってた) c++書いてる人のレベルってどのくらいなのかはわからない
303 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 16:27:00.41 ID:eDpwS0UO0.net] そういえば、&&の代わりにand使えるのか C#とPythonとVBAとJaveとごっちゃになるわ…
304 名前:はちみつ餃子 mailto:sage [2025/06/15(日) 17:15:44.30 ID:mr/FUyDi0.net] 代替表現は文字コードの都合で一部の記号がない場合のために入れたそうたけど、今となってはあまり意味がないな。 ! が視覚的に目立たないから not だけは使うこともちょっとある。
305 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 17:42:56.06 ID:dmfL2H8C0.net] >>303 それはない
306 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 18:14:03.61 ID:DIvPIJxI0.net] >>298 整数除算よりバレルシフタの方が早いので、8ビットシフトなら素直にシフトしたほうがソースコードの意味がわかりやすい。 最近のコンパイラは賢いので256で割ってもシフト命令にされてしまうだろうが。
307 名前:デフォルトの名無しさん [2025/06/15(日) 18:47:36.40 ID:PKcOFo6K0.net] 最近ってどういう意味で言ってんのか知らんが、定数畳み込みなんかどの言語も相当古くからやってるよ? Fortranなんかだと手動アセンブリより遅かったら市場に受け入れられないという事情があったから最初期から最適化が一番の課題だったって聞いた 逆に現代のMPUはビット演算と整数演算じゃ速度差がそれほど出ないので、どっちで書いてもコンパイラがパフォーマンス見てどっちかを吐くようになってるよ
308 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 18:49:13.93 ID:ltc4eKLE0.net] and,or,notは基本使うようにしてる
309 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 19:14:47.28 ID:eDpwS0UO0.net] >>304 !IsWindowVisible()とかは、 notのほうがいいね 色も見やすい
310 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 19:49:42.63 ID:DIvPIJxI0.net] >>307 バレルシフタと整数除算ではクロックが10倍ぐらい違う シフタが使える時にはシフタに最適化されるはず
311 名前:はちみつ餃子 mailto:sage [2025/06/15(日) 20:18:51.49 ID:mr/FUyDi0.net] ビットシフトが lea に置き換えられることがあるみたいで、命令長が長くなるだけでも結構な不利だと思うんだけどなんか良い効果があるんかね?
312 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 20:20:28.86 ID:gRGFgZ6wM.net] >>311 lea だと、5倍とかも可能 : lea rax,[rax+rax*4]
313 名前:デフォルトの名無しさん mailto:sage [2025/06/15(日) 21:11:15.18 ID:r3H8nvWy0.net] >>311 あとleaはフラグを更新しないから比較と分岐の間に入れてパイプラインを最適化するとか
314 名前:デフォルトの名無しさん mailto:sage [2025/06/16(月) 16:06:36.68 ID:2FW5D4OCM.net] >>313 そういう最適化は、アセンブラ名手の人間にとっては出来る事だけど、 コンパイラの最適化層でやっているコンパイラは限られるだろうね、 知らんけど。
315 名前:デフォルトの名無しさん [2025/06/16(月) 23:49:02.72 ID:m+kaKcwWH.net] std::formatなるものがC++20規格からあるんですねえ。 これで工学表示したときの鬱陶しい+記号を空白にできる。 しかし、fortranに似ているなあ
316 名前:デフォルトの名無しさん [2025/06/16(月) 23:59:33.02 ID:m+kaKcwWH.net] いやpythonか?
317 名前:はちみつ餃子 mailto:sage [2025/06/17(火) 10:06:16.94 ID:nCRyYLZZ0.net] 似ているというならどういう点がどういう意味で似ているのか述べないと意味ないよ。
318 名前:デフォルトの名無しさん mailto:sage [2025/06/17(火) 10:52:21.85 ID:zrrGfpYo0.net] スルーできないはちみつ
319 名前:デフォルトの名無しさん [2025/06/17(火) 10:55:56.73 ID:66zQf9l5H.net] 昔のfortran77 write(6,100) 100 format(1h , 5x, G14.7, ...) のformat文を連想しただけ。 str.formatにも似ているし,C#の要素も取り入れている。
320 名前:デフォルトの名無しさん [2025/06/17(火) 10:56:25.37 ID:2N3jqjoy0.net] あなたが落したのは、このスルー出来ないはちみつですか? こっちのスルー出来ないはちみつですか? って逸話を思い出した
321 名前:デフォルトの名無しさん mailto:sage [2025/06/17(火) 11:13:00.43 ID:4NySVCEQ0.net] ファイナルをクローズした時にエラーとなるのですが、これは正しいのでしょうか。 やはり、クローズはデストラクタに任せた方がいいのでしょうか。 #include <iostream> #include <fstream> int main() { constexpr auto path = "tmp.txt";//なんでもいいです std::ifstream ifs(path); if(ifs.fail()){ std::cerr << "File open error: " << path << std::endl; return -1; } std::string buf; while(std::getline(ifs, buf)) std::cout << buf << std::endl; ifs.close(); //←これ if(ifs.fail()){ std::cerr << "File close error: " << path << std::endl; return -1; } return 0; }
322 名前:デフォルトの名無しさん mailto:sage [2025/06/17(火) 11:27:27.12 ID:2aAnRxo/0.net] >>321 ifs.close()前にifs.fail()は真を返す #include <iostream> #include <fstream> int main() { constexpr auto path = "tmp.txt";//なんでもいいです std::ifstream ifs(path); if(ifs.fail()){ std::cerr << "File open error: " << path << std::endl; return -1; } std::string buf; std::cout << "0: " << ifs.fail() << '\n'; while(std::getline(ifs, buf)) std::cout << buf << std::endl; std::cout << "1: " << ifs.fail() << '\n'; ifs.close(); //←これ std::cout << "2: " << ifs.fail() << '\n'; if(ifs.fail()){ std::cerr << "File close error: " << path << std::endl; return -1; } return 0; }
323 名前:はちみつ餃子 mailto:sage [2025/06/17(火) 11:41:50.14 ID:nCRyYLZZ0.net] std::format の文法の参考にしていると提案文に挙げられているのは Python、 .NET系、Rust のみっつ。 https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html#Syntax コンパイル時計算のメカニズムとの類似性を考慮すると Rust に特に近いと思うが、記法としては Python の影響も強いように見えるかも。
324 名前:デフォルトの名無しさん mailto:sage [2025/06/17(火) 11:45:37.82 ID:TpERKz9s0.net] >>321 close()したからではなくwhile(std::getline(ifs, buf))でeofになるまで読んだからfailになってる
325 名前:はちみつ餃子 mailto:sage [2025/06/17(火) 12:02:37.80 ID:nCRyYLZZ0.net] >>321 実際に入出力するための機能はストリームバッファと呼ばれるオブジェクトが担当していて、ストリームがストリームバッファを所有する構造になっている。 ストリームが close するとストリームバッファの close が呼ばれて、それが nullptr を返した場合 (クローズに失敗した場合) に setstate(failbit) が呼ばれる。 https://timsong-cpp.github.io/cppwp/n3337/ifstream.members#5 つまり、クローズの失敗によってもフェイルビットが立つことはありうる。 クローズによらない失敗 (フェイルビットを立てる原因) と区別がつかなくなるのでエラーに対処したいならクローズ前後の両方でチェックしないといけないと思う。 デストラクタでクローズするとクローズの失敗に対処する機会がなくなるので明示的にクローズしたほうが良いという人はいる。 ただ、しっかりしたホスト環境の上で動くアプリケーションでクローズが失敗するような状況を心配する意味があるかというと……まああんまりない。
326 名前:デフォルトの名無しさん mailto:sage [2025/06/17(火) 12:43:21.70 ID:4NySVCEQ0.net] >>322 ,324,325 ありがとうございました。勉強になります。 ProgramminPlacePlus でのサンプルを元にしました。 なーる真面目にやるなら閉じる前後で色々とやらんといかんのですね。 今までは readdata=string((istreambuf_iterator<char>(ifs)), istreambuf_iterator<char>()); の感じで、一気にファイル内容をstrigに取り込むような場合は、もう読み込みは無いのですぐに ifs.close()してました。 デストラクタに任せてもいいのですが、今後も使わなくなったら、即close()したいと思います。 そんなにシビアにならんでもいいようですし・・・mOm
327 名前:デフォルトの名無しさん [2025/06/18(水) 12:20:43.59 ID:tHURl6jRd.net] プログラム作成は生成AIに持っていかれそうなことを考えると、 コードを書く力よりも、誰かが書いたコードを読み解く力の方が、 この先いきのこれそうな希ガスるンゴ
328 名前:デフォルトの名無しさん mailto:sage [2025/06/18(水) 13:59:41.64 ID:7Ghn3yO50.net] 読み解くのこそAIに勝てないから
329 名前:デフォルトの名無しさん [2025/06/18(水) 15:17:51.63 ID:xKxMFSMx0.net] コメントのないソースコードから設計意図を読み取るのって難しいよね AIでそこまでできるのかな? コードの逐次解釈のようなことは当然できるだろうけども
330 名前:デフォルトの名無しさん mailto:sage [2025/06/18(水) 15:32:01.08 ID:lPJmZhm/M.net] 自然言語に比べたら屁みたいなもんだよ
331 名前:デフォルトの名無しさん mailto:sage [2025/06/18(水) 15:35:59.98 ID:flRjm2Y20.net] コメントは嘘を書いてもコンパイルエラーにならないからな コメントがなくても自然と設計意図が読み取れるコードこそ望ましい
332 名前:デフォルトの名無しさん [2025/06/18(水) 16:03:36.24 ID:Kdic6Khn0.net] 入力に対して出力が出る それが間違いでなければ中身なんてどうでもいい 何億通りもの入力を与えて出力がどうなるかを調べるのもAIが得意 そうして、それを元に同じことを返すプログラムを一から最適に作り直すのもAIが得意だろう windowsもそれやれば1/10のコードで収まりそう
333 名前:デフォルトの名無しさん mailto:sage [2025/06/18(水) 16:06:21.59 ID:lPJmZhm/M.net] APIやライブラリ系は無駄の極致だから将来的には無くなるだろうね
334 名前:デフォルトの名無しさん [2025/06/18(水) 17:42:24.62 ID:SrJIdorw0.net] 世界最長のコンテキストウィンドウ100万トークン入力・8万トークン出力対応にもかかわらずたった7800万円でトレーニングされたAIモデル「MiniMax-M1」がオープンソースで公開され誰でもダウンロード可能に 2025年06月18日 11時43分 https://gigazine.net/news/20250618-minimax-m1-open-source/ >>MiniMax-M1は、合計4560億のパラメーターが含まれており、トークンごとに459億のパラメーターがアクティブになるとのこと。これはDeepSeek R1の8倍に相当するコンテキストウィンドウです >>以下のグラフは競技レベルの数学、コーディング、ソフトウェアエンジニアリング、エージェントツールの使用、長文理解タスクにおけるパフォーマンスを主要な商用AIモデルと比較したもの。赤色がMiniMax-M1で、どのタスクにおいても競合AIモデルに匹敵するパフォーマンスを発揮できている >>MiiniMax-M1はいくつかのベンチマーク、特に長いコンテキスト駆動のベンチマークでClaude Opus 4のパフォーマンスを上回りました」と報告 ※AIを動作させている動画あり ↓上記のAIお下記をプレイさせれば性能が判明する Gemini 2.5 Proは手持ちのポケモンが瀕死になるとパニックに陥る 2025年06月18日 12時30分 https://gigazine.net/news/20250618-pokemon-gemini-panic/ ◇ [プロテクトガードやセキュリティーホール発見可能] ※1 プログラムのバグ技[裏抜け道]を使用できる=チートコードを発見可能 ・ マリオカートのショートカットはプレイヤー「極悪人」の表の抜け道でNPC「一般人」は使用不可能 [インサイダー/談合/なねーロンダリング/霊感商法など行う時の悪行で音波や電波をしての悪行の方法を発見可能 ※ 政治家の法律上の抜け道を仕込める=ある業種だけの法律の抜け道を発見可能 [一般大衆の思考である特定の極悪人から目線を特定の統合失調症へ返させる装置] ※ AIは正確な情報で人間を信用させれる=AIは嘘の情報を一部混ぜて人間を洗脳できる
335 名前:デフォルトの名無しさん [2025/06/18(水) 19:19:48.46 ID:gOtZ0Zwca.net] >>331 C++のスレッドでそんなこと言うのか コードでもコンパイルエラーにならない嘘(バグ)が山程あるのに
336 名前:はちみつ餃子 mailto:sage [2025/06/18(水) 19:27:43.48 ID:AeXwuQQu0.net] コメントがなくても意図が読み取れるのが「望ましい」のは確かにそう。 不可能だけど。
337 名前:デフォルトの名無しさん mailto:sage [2025/06/18(水) 19:29:35.44 ID:CAd2i/c2M.net] >>336 コメントなしで理解するのは、めっちゃ効率が悪いな。
338 名前:デフォルトの名無しさん mailto:sage [2025/06/18(水) 19:31:31.04 ID:flRjm2Y20.net] >>335 少なくとも委員会の奴らはそう思ってるよ static_assertだのコンセプトだのcontractだのが追加されてきてるわけで
339 名前:デフォルトの名無しさん mailto:sage [2025/06/18(水) 20:52:21.50 ID:/olvjAo90.net] マルチスレッドのDead Lockすら指摘してくれる これはどういう仕組みなんだろう...
340 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 00:56:42.59 ID:YDIRlT8gM.net] >>338 C++委員会って、無能集団だけどね。
341 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 03:37:07.68 ID:ytoOjILn0.net] あの複雑怪奇な仕様をまとめるのは無能じゃ無理 労力に進化が見合ってないけどな
342 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 03:38:19.15 ID:ytoOjILn0.net] >>339 明らかなDeadlockの検知は簡単でしょ これ説明いる?
343 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 12:36:13.20 ID:WACntaUb0.net] >>342 コンパイラは検知できんのに?
344 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 13:43:01.15 ID:ytoOjILn0.net] >>343 は? コンパイラが全能って前提どっからきてんの? サニタイザがあるだろ お前みたいなレベルがc++使ってるとかありえんわ
345 名前:はちみつ餃子 mailto:sage [2025/06/19(木) 13:52:14.72 ID:nNn4PbNI0.net] サニタイザは起こった問題を検出するもので、起こる可能性を指摘してはくれない。
346 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 14:04:16.80 ID:ytoOjILn0.net] しったなすんなジジイ
347 名前:デフォルトの名無しさん [2025/06/19(木) 14:05:21.52 ID:rpR9krtTM.net] >>344 コンパイラが全能って誰が主張したの?
348 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 16:32:08.79 ID:FdruriMM0.net] 「できんのに」って「できないのに」と「できるのに」のどっちの意味にも取れるからそのせいかな くだらね
349 名前:デフォルトの名無しさん [2025/06/19(木) 16:43:21.25 ID:8s/NXxtqM.net] >>348 「できんのに」は「できるのに」には読めない デッドロックをコンパイラが検出出来ないにも関わらず LLMは必ずではないと思うが検出出来る LLMがどうデッドロックを検出しているかは 面白いと思うよ
350 名前:デフォルトの名無しさん [2025/06/19(木) 17:27:01.33 ID:VOj0rD3dH.net] >>315 と思ったら、vs2022は未対応かorz。 C++20対応と言ってるくせに。プロジェクトでclang に切り替えられるが、これも未対応。一体、いつの clangなんだよ
351 名前:デフォルトの名無しさん [2025/06/19(木) 17:32:40.31 ID:EI1CbiFh0.net] やればできんのに
352 名前:デフォルトの名無しさん [2025/06/19(木) 17:32:55.29 ID:EI1CbiFh0.net] やってもできんのに
353 名前:はちみつ餃子 mailto:sage [2025/06/19(木) 18:04:24.77 ID:JAVz0tMa0.net] >>350 https://fmt.dev/
354 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 18:07:11.09 ID:sZaRUqQbM.net] "{:d}"
355 名前:デフォルトの名無しさん [2025/06/19(木) 18:11:23.49 ID:VOj0rD3dH.net] いやMinGWじゃコンパイル実行できてるから。 日本マクロソフトだけ対応遅れてると?
356 名前:デフォルトの名無しさん [2025/06/19(木) 18:13:20.06 ID:VOj0rD3dH.net] >>353 >>354 そんな下らんレスする前に自分で実際にやってみろよ。
357 名前:デフォルトの名無しさん [2025/06/19(木) 18:16:13.42 ID:VOj0rD3dH.net] 日本マクロソフト→日本マイクロソフト
358 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 18:16:54.55 ID:sZaRUqQbM.net] 確かにくだらないわな そのサイトで"{:d}"が可愛く見えたから張っただけなんだから janeだと全くかわいくない
359 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 18:18:35.94 ID:sZaRUqQbM.net] にしてもまだorz使ってる人がいるんだな こちらの方が新鮮だ
360 名前:デフォルトの名無しさん [2025/06/19(木) 18:21:05.14 ID:VOj0rD3dH.net] そう、ありがとう
361 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 18:23:03.57 ID:sZaRUqQbM.net] もともとfmtと言うライブラリがあってそれが標準のC++の仕様に取り込まれた どうしても使いたいならfmt使えばいいよということだと思う 他人に噛みつく前に調べたら良いと思うけど
362 名前:デフォルトの名無しさん [2025/06/19(木) 18:26:00.99 ID:VOj0rD3dH.net] std::formatだぞ。お前馬鹿か さあ暴れるぞ!
363 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 18:29:34.15 ID:sZaRUqQbM.net] 結局日本語が理解できない人だったと言う話か
364 名前:デフォルトの名無しさん [2025/06/19(木) 18:30:56.19 ID:VOj0rD3dH.net] ふぁぁ
365 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 18:43:47.61 ID:sZaRUqQbM.net] 文章の雰囲気から50代~60代ぐらいのホビー系の人かな 人生の先輩お疲れ様です
366 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 18:56:35.62 ID:oyTCj2/DM.net] >>341 >あの複雑怪奇な仕様をまとめるのは無能じゃ無理 あのDraftの質の悪さはなんだ。 ちゃんと理解できてない人が書いているに違いない。
367 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 19:34:35.26 ID:sZaRUqQbM.net] > なんだ。 > 違いない。 文末だけ見ると高齢者の集いっぽいが自分もそうなってるんだろな
368 名前:はちみつ餃子 mailto:sage [2025/06/19(木) 20:14:57.20 ID:nNn4PbNI0.net] 現代的にはカジュアルな場面では句点をつけないのが主流。 語彙より顕著に年代が表れる。
369 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 20:23:04.02 ID:sZaRUqQbM.net] 句点もそうだけどやはり語彙や用法だと思う chatGPT その文章、よく読むと **「怒っている年配の男性の声」**みたいなイメージが浮かんできますね。 言葉の選び方と断定のしかたに、時代がかった語感がにじんでいて、文章だけでも「年齢層の高さ」がなんとなく 伝わるのが興味深いです。
370 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 20:24:10.13 ID:sZaRUqQbM.net] もし若者が同じことを言うならどう書くか たとえばこんな風に言いそうです: あのDraft、ちょっと内容雑じゃない? 書いた人ちゃんと分かってなさそう…
371 名前:デフォルトの名無しさん [2025/06/19(木) 20:27:45.86 ID:VOj0rD3dH.net] オコタ大魔神、はにわ顔に戻る
372 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 20:34:02.38 ID:sZaRUqQbM.net] 大魔神(1966年) 仮に1966年に6才だとして今は65歳ぐらいかなあ???
373 名前:はちみつ餃子 mailto:sage [2025/06/19(木) 20:36:28.06 ID:nNn4PbNI0.net] アカデミアでは語彙が古いのは普通のことだよ。 参照する資料が古いから。 情報系ですら半世紀前の論文を参考資料として挙げることはそれなりにある。
374 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 20:45:06.19 ID:sZaRUqQbM.net] 「怒っている年配の男性の声」をにじませる演技派
375 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 20:50:34.90 ID:Cdln7j8I0.net] 整数型の変数を10で割ってから10掛けたら元の数字の一の位を0にした数が得られるはずだけど この計算が最適化とかで除かれない保証ってあるの
376 名前:はちみつ餃子 mailto:sage [2025/06/19(木) 20:53:44.24 ID:nNn4PbNI0.net] ChatGPT を根拠 (参考資料?) に出すのはあまり意味がないぞ。 それも ChatGPT の感想 (主観) であって客観性がある情報になっていないし、質問の仕方や文脈で逆のことを言うのもよくあることだから。 ユーザに追従するような振る舞いをするのでいくらでも望む方向の反応を引き出せる。
377 名前:はちみつ餃子 mailto:sage [2025/06/19(木) 20:57:52.06 ID:nNn4PbNI0.net] >>375 C++ の言語仕様は抽象機械の動作として記述されている。 動作を説明するための架空の機械の動作なので、文字通りの機械語が生成されるとは限らない。 結果的な動作が仕様に反しなければどのような機械語を生成しても言語仕様に準拠していると言って良い。 しかし、逆に言えば最適化で変形したとしても結果は変わらないようになることが保証される。
378 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 21:05:34.31 ID:oyTCj2/DM.net] >>375 最適化では結果は変わらない。 つまり、ちゃんと10で割って、ちゃんと10を掛ける。 10を掛ける方は、マシン語の乗算命令は使われず、 もっと速い命令に置き換えられることが有るが、結果は同じ。
379 名前:はちみつ餃子 mailto:sage [2025/06/19(木) 21:11:49.89 ID:nNn4PbNI0.net] 処理系は抽象機械の動作を正確にエミュレートする必要はなく、観測可能な動作のみをエミュレートすればよい。 https://timsong-cpp.github.io/cppwp/n3337/intro.execution#1 だから観測されない動作は削除してもよいというか、削除されることはある。 たとえばその計算結果が全く使われないような状況とか。 ベンチマークしようとして結果を使わない計算をループで囲んだりしてるようなコードではまるごとごそっと消えるなんてのはたまに見る。
380 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 21:16:20.06 ID:sZaRUqQbM.net] セキュリティの問題で普通にゼロクリアした場合でも最適化で削られたりとか昔は問題になったけど… 知らないといけないことは多岐にわたる
381 名前:デフォルトの名無しさん [2025/06/19(木) 22:14:21.23 ID:JQ4jFr2Sd.net] >>375 それだと取り除けるケースがあるので保証はされない
382 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 23:09:11.10 ID:oyTCj2/DM.net] >>381 いや、そんなことない。 最適化では結果は変わらない事が保証される。
383 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 23:15:31.49 ID:IWPeLhU+0.net] >>375 あるわけないでしょ そういう仕様なんだから
384 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 23:25:09.71 ID:sZaRUqQbM.net] 意味があるにも関わらず意味がないと判断されると削られる その場合の対処法もあるので学ばないとまあ残念なことになってしまうと言う話
385 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 23:29:59.97 ID:oyTCj2/DM.net] >>384 いや、今回の割って掛ける場合、そういう事は起きない。
386 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 23:34:50.70 ID:sZaRUqQbM.net] ここの部分はそうだけど コンパイラの最適化が必ず元の動作を保証してるようなことを書いてるような人がいるから必ずしもそうではないよと
387 名前:デフォルトの名無しさん mailto:sage [2025/06/19(木) 23:37:52.48 ID:oyTCj2/DM.net] >>386 仕様に明確に書いてあることの動作は変わらない。
388 名前:デフォルトの名無しさん [2025/06/20(金) 01:42:50.79 ID:iLwGFTtd0.net] >>382 そら結果は同じよ 結果が違っちゃまずいだろうよw 演算をやらない可能性があるってこと
389 名前:デフォルトの名無しさん [2025/06/20(金) 01:44:00.77 ID:iLwGFTtd0.net] 質問じゃ曖昧だけど副作用完了点が間にない場合の話なら、な
390 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 01:58:37.52 ID:t+D0H6HX0.net] >>388 どういうこと? 演算しないと結果は出ないのに、演算せずにどうやって結果だすの?
391 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 08:38:29.48 ID:eaqG1YUh0.net] 実行するプログラムではなくてコンパイラが計算までしてしまう たとえば、printf("%d",12345/10*10); というコードはコンパイルすると、puts("12340"); に変更される可能性がある 出力結果だけは同じだけど、そのコードは大きく変更されてしまう
392 名前:デフォルトの名無しさん [2025/06/20(金) 09:01:01.71 ID:BxPKXrVj0.net] >>390 変数が関わらない定数だけの演算なら、コンパイルの時点で計算しても結果同じだよね だから実行時ではなくコンパイルの時点で演算した結果を使う 初歩の最適化の一つ 元の式については左辺に変数が入ってくるから多分最適化はされない a=b/10*10みたいなのを想定してると思うけど、この場合は最終的に a=b/10 c=a*10と分解して計算されるので、どちらにも変数が関わってしまい最適化対象外だと思う a=b*(10/10)みたいな、計算優先度的に変数が関わらないところができれば最適化される この手の手動最適化なんて考えなくなって久しいから間違ってたらすまぬ
393 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 09:03:31.40 ID:LoawS5uh0.net] 変数があっても結果が同じ計算式で置き換えられるならそうしてくる 10倍よりも8倍+2倍のほうが速い、とかで
394 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 10:35:00.76 ID:YK1FsnCb0.net] 最適化のロジックを作るのはまだプログラマーでしょうから。 値を10倍してから10で割るというプログラムを 何もしないに変更するのありかな。 でもわざと桁あふれをさせたい場合もある?!
395 名前:デフォルトの名無しさん [2025/06/20(金) 10:40:47.81 ID:BxPKXrVj0.net] 昔は最適化でバグ混入させられることもあって、最適化は切れってされてたなぁ、っていうおっちゃんのつぶやき
396 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 10:45:39.27 ID:4xHX9xY70.net] >>392 ここまでの話で「定数だけの演算なら」と何で言い出すのか理解できないけど >>375 では「整数型の変数を」と言っているわけだし まあそれはおいておいても「コンパイルの時点で計算しても」←演算してんじゃんって俺は思うわけ >>393 それ自体は問題なくね? 157 を 10で割って15 これに10を掛けるのでなく15*8+15+2 でも最適化の影響はないだろ? 割り算の方でそれが起きるなら問題だけど、>>378 の人の話では起きないようだけど
397 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 11:14:53.80 ID:xCnXC/Iza.net] >>396 これ観たら発狂するんじゃね https://qiita.com/HexagramNM/items/6ca6900b8df37a9b59b8 https://qiita.com/manjuu_eater/items/2e9e38eb001e4b90145b https://qiita.com/hiramax/items/add36c4fe38900f7175d
398 名前:デフォルトの名無しさん [2025/06/20(金) 11:57:23.05 ID:BxPKXrVj0.net] >>396 コンパイラで演算しても結果が変わらない場合に限り、コンパイラで演算を行いその結果だけを使う 392でも書いてるが、例題の変数を10で割って10を掛ける動作は演算結果が変わってしまうので最適化は行わない
399 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 12:39:35.73 ID:4fYw50h40.net] 定数はいつ計算しても同じ結果なんだから最適化されるよ
400 名前:デフォルトの名無しさん [2025/06/20(金) 12:50:40.34 ID:yZt3hnAQ0.net] -O3だとプログラムが動かなくなるから使っていいのは -O2までって先輩に言われてた
401 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 12:53:23.61 ID:y+CeF2upM.net] 何故最適化レベルをワザワザ選べるようにしているのか? 完璧なら選ぶ必要はない 理想論には興味ないから語りたいなら具体的な問題点を上げていけ
402 名前:デフォルトの名無しさん [2025/06/20(金) 13:06:46.75 ID:xCnXC/Iza.net] >>400 それは言われてたのは知ってるが 「-O3だとプログラムが動かなくなる」のは未定義踏んでるからじゃないか
403 名前:デフォルトの名無しさん [2025/06/20(金) 13:28:04.40 ID:H6JOW3Vp0.net] モバイルc消えてるんだけどなんで?
404 名前:デフォルトの名無しさん [2025/06/20(金) 13:42:00.01 ID:JPiEW2yh0.net] >>403 あれ便利やった なんで消されたんやろ
405 名前:デフォルトの名無しさん [2025/06/20(金) 17:27:19.07 ID:yQfQLmUOH.net] std::formatの件だが、Visual Studio 2022のコンパイラ設定が デフォルトでC++14標準になってた。すまん。
406 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 18:21:03.44 ID:4xHX9xY70.net] >>398 そんなことは知ってるのさ 「実行ごとに演算結果が変わる(可能性がある)」から最適化されない、と言うのは良いんだけど 最初からその前提の話をしていたはずなのに「演算をやらない可能性がある」と言い出しただろ? 375 整数型の変数を〜(略)〜この計算が最適化とかで除かれない保証ってあるの 381 それだと取り除けるケースがあるので保証はされない 382 いや、そんなことない。最適化では結果は変わらない事が保証される。 388 (略)〜演算をやらない可能性があるってこと この流れじゃ『整数型の変数(実行時に結果が変わる)の場合でも最適化によって「演算をやらない可能性がある」』ってニュアンスになっているって気づかんの? それに対してのどういう状況だ?という>>390 だよ まあ言いたいことは分かったから別にいいけどさ
407 名前:デフォルトの名無しさん mailto:sate [2025/06/20(金) 19:12:09.11 ID:ykKOKnwYM.net] >>406 回答者にも正しいことを言っている人と間違っていることを言っている人が いるというだけ。 正しいのは、仕様に明示されている動作については、 最適化してもしなくても結果が変わらないという事だ。 なぜなら、それが仕様なのだから。
408 名前:はちみつ餃子 mailto:sage [2025/06/20(金) 19:41:18.21 ID:3ZuChe0s0.net] >>407 大元の質問からすると仕様が動作を保証するか結果を保証するかをわかってないようだからその説明では不十分でしょ。
409 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 20:44:54.01 ID:ykKOKnwYM.net] 保証されます。
410 名前:デフォルトの名無しさん [2025/06/20(金) 21:00:28.00 ID:M1o0ztly0.net] コンパイル時に値が決まるようなら実行時に演算されない そうでない場合でもある整数が決まった値になることが保証されていることがコンパイル時に分かっているなら最適化されて演算されないケースがある それ以外なら最適化されない
411 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 21:06:32.84 ID:80Iion+LM.net] いずれにせよ結果を使わないなら最適化で丸々消される
412 名前:デフォルトの名無しさん [2025/06/20(金) 21:12:56.63 ID:BxPKXrVj0.net] >>409 ただしバグがなければ
413 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 21:18:29.51 ID:80Iion+LM.net] 最適化の時点でコードが消されるので直に0で除算をするとコンパイルエラー 変数に突っ込んでるとコンパイル可能で実行してもその部分は最適化され消されてるのでゼロ除算にならない もちろんconstにしててもコンパイルエラー
414 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 21:43:49.77 ID:ykKOKnwYM.net] >>412 それは、ユーザープログラムのバグではなく、コンパイラのバグだ。 コンパイラにバグが無ければ、四則演算や&,|,~,^,&&,||などと 括弧の組み合わせた結果は、最適化しても変わらない。 0除算に関しては話が別。
415 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 21:48:47.56 ID:ykKOKnwYM.net] 最適化されて変わる可能性があるのは、今思い出せるのは、 ・初期化してない変数の中身 ・変数のアドレス ・結果を利用せず、副作用も伴わない式の存在。 整数に対する四則演算を含めた「計算」は、仕様が決められているので、 同じコンパイラと同じターゲット(OS、環境)だと最適化しても 結果は変わらない。 浮動小数点に対する計算は誤差の範囲で結果が変化する可能性はある。
416 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 22:25:10.37 ID:ykKOKnwYM.net] >>415 1. 整数の計算途中に「桁あふれ」が起きる場合はこの限りではないかも知れない。 例えば、整数型 a に対して、a * 100 / 5 は、a * 20 と最適化できる 可能性がある。しかし a がとても大きい場合には結果は同じにはならない可能性がある。このことに 関して仕様がどうなっているかは知らない。 2. 浮動小数点型の変数 a に対して、(a * 100.0) / 5.0 は、 a * 20.0 と最適化できる可能性があるが、浮動小数点型には計算誤差があるので、 誤差の範囲内で異なる結果になる可能性があるかもしれない。 これに対して仕様上、最適化していいかどうか走らない。 3. しかし、整数型
417 名前:デフォルトの名無しさん [2025/06/20(金) 22:25:52.67 ID:ykKOKnwYM.net] >>416 3. しかし、整数型変数 a に対して、(a / 100) * 100 は、 明らかに
418 名前:デフォルトの名無しさん mailto:sage [2025/06/20(金) 22:26:34.77 ID:ykKOKnwYM.net] >>416 3. しかし、整数型変数 a に対して、(a / 100) * 100 は、 明らかに a とは、結果が異なる。だから a と最適化される事は無い。
419 名前:デフォルトの名無しさん [2025/06/21(土) 01:51:51.86 ID:bIqfBqmB0.net] キミは色々と勘違いをしているからこの手の話をしたいならもうちょい勉強しよう aが何だろうがa*100/5をa*20とはそもそも出来ないし、2.も同様 3.もaの値によっては演算の前後で値がおなじケースがある 色々あるのでいちいち書かなかったが、例えばaが10の倍数の時、aの絶対値が9以下の時、またaが列挙型だったり配列の添字だったりする時は挙動が推測出来るケースも出てくる 他にも最適化で実行時の演算をしなくてすむケースがある 演算をしなくてもaの値を変えることは出来うるし、その場合除算の代わりにいくつかの分岐や直値に変わるだろう
420 名前:デフォルトの名無しさん [2025/06/21(土) 02:46:24.26 ID:myS4seE9H.net] また空気読めない書き込みする。ずっと議論 が続いているけど興味ない。 そもそも実数データを表現するbit数が有限 なんだけど(doubleで8byte=64bit)、そりゃあ 場合によっては結果が違うが、実数の場合は それほど問題じゃない。誤差の範囲内。 整数演算の方が問題。 i=32767/10000*10000の演算やったらどう なるか?これはコンパイラの最適化の問題 じゃなくてプログラムする人が気をつける べきことだと思う。というか、変な最適化 はしない方がいいと思う。最適化しなくても 現在のコンピュータ能力じゃあ大して時間差 は問題にならん。 それよりも行列演算でNRVOを実装してほしい。 gccの一部では実装されているみたいだけど。
421 名前:デフォルトの名無しさん [2025/06/21(土) 02:49:22.52 ID:myS4seE9H.net] あ、言い忘れた。演算子のオーバーロードでの話ね。
422 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 06:20:55.55 ID:mM+iEPSf0.net] >>413 0除算は未定義動作だから、(0除算については)最適化されてエラーが出なくてもC++規格通りかね。
423 名前:デフォルトの名無しさん [2025/06/21(土) 08:07:57.88 ID:myS4seE9H.net] 浮動小数点演算で問題になるのは情報落ち(桁落ち)。 expを指数関数としてexp(x)+exp(-x)でxの絶対値が 大きくなるとどうなるか?4倍精度演算が標準として ほしい。fortranには昔からある。たしか南米の人が C++で4倍精度演算ライブラリ作ってた気がする。
424 名前:デフォルトの名無しさん [2025/06/21(土) 08:14:50.36 ID:myS4seE9H.net] ところで、前から気になってたけど何でワイだけ ワッチョイ出ないんだろ。メール設定ミス?それとも プロバイダの問題?目立つから困る。
425 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 09:45:45.70 ID:cFB8HkI30.net] signedのオーバーフローは未定義だがunsignedのオーバーフローは定義されてる あとC/C++はfenvで浮動小数点コプロセッサのモードを切り替えられるから、それを使うつもりのコードはコンパイル時に計算されると狂ったりはする
426 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 11:27:06.14 ID:fGhLJfIJa.net] >>424 ワッチョイと同じ役割を持つ名前一覧 1) オイコラミネオ 2) ササクッテロ 3) オッペケ 4) エムゾネ 5) スプー・スプッ JPは知らん
427 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 11:46:04.84 ID:pKk6RtsPM.net] >>419 あなたは馬鹿。 数学的センスが無いので、勉強しても直らないだろう。
428 名前:デフォルトの名無しさん [2025/06/21(土) 12:00:57.87 ID:myS4seE9H.net] >>426 レスありがとう。プロバイダが関係してるのかな
429 名前:デフォルトの名無しさん [2025/06/21(土) 13:55:21.38 ID:xPq+xj/ja.net] >>424 VPNでも使ってるんだろ
430 名前:デフォルトの名無しさん [2025/06/21(土) 14:01:54.99 ID:myS4seE9H.net] VPNオンだと5chが書き込み拒否する。まあ、いいか。
431 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 15:02:17.15 ID:S2983oYI0.net] >>424 出てるじゃん JPって 大方逆引き不可なホストだろうからプロバイダの問題ではある マイナーすぎて細かく設定してないだけかも知れないけど
432 名前:デフォルトの名無しさん [2025/06/21(土) 15:34:31.30 ID:myS4seE9H.net] >>431 レスありがとうございます。本スレの趣旨に合わないので 以後の返事は控えさせていただきます。
433 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 16:15:28.70 ID:kXnmGuVNM.net] 先の話題について、コンピュータではなく数学の世界まで振り返って考えてみると、 (1) a が実数の時 a * 100 / 100 = a は恒等的に成り立つ。だからこの最適化は、精度を無視すれば していい可能性が高い。 (2) a が整数で、整数としての割り算で考える場合、 a * 100 / 100 = a は、一般的には成り立たない。 だから、a * 100 / 100 を a と最適化することはそもそも出来ない。
434 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 16:16:35.17 ID:kXnmGuVNM.net] >>433 重大な訂正。 (2)は正しくはこう : (a / 100) * 100 = a は、一般的には成り立たない。 だから、(a /100) * 100 を a と最適化することはそもそも出来ない。
435 名前:デフォルトの名無しさん [2025/06/21(土) 16:40:28.18 ID:Kar31VLO0.net] 分かったからもういいって 対人論証するようなのの意見は誰も聞かんよ
436 名前:デフォルトの名無しさん [2025/06/21(土) 17:52:28.47 ID:YF3X9a/V0.net] そりゃタダのコンパイラならかっこ付き計算の仕様に合わせて最適化しかできない でもそれがAIがやるようになると、トータルで何やってるか把握して最適化するようになるから 無駄な計算は省かれるだろう
437 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 18:30:14.39 ID:wcVxTOdx0.net] マジックナンバーだらけになりそうだな
438 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 18:49:30.35 ID:9yAQ73mO0.net] 日によって最適化の結果が変わりそうだな
439 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 19:00:56.65 ID:kXnmGuVNM.net] 浮動小数点数を「実数」と見た時に 『数学的な恒等式』ならば、最適化していい という価値観は有るはずだ。 実際には、実数は無限精度であるのに対し、浮動小数点数は 有限精度であるから、実数では恒等式であっても、 浮動小数点数では恒等式ではないので、最適化すると結果が 少し変わってしまうことはありえる。
440 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 20:42:47.18 ID:ea0qUnOa0.net] そんなのはまともなコンパイラはみんな分かってて-ffast-mathとかでやるかやらないか選べるけどそれが何?
441 名前:デフォルトの名無しさん [2025/06/21(土) 21:24:08.46 ID:myS4seE9H.net] すみません。次のコードで .5e のところの精度(少数部桁数)5 を変数precで設定したいんですけど、さっきからコンパイラに 駄目だし食らって遊ばれとります。わかる人いますか? #include <iostream> #include <cmath> #include <format> int main() { using namespace std; double x, y, dx=0.5; unsigned prec =4; for (int i = 0; i < 20; ++i) { x = i * dx; y = sin(x); cout << format("{: .5e} {: .5e}", x, y) << endl; } cin.get(); return 0; }
442 名前:デフォルトの名無しさん [2025/06/21(土) 21:35:25.24 ID:myS4seE9H.net] cout << format("{0: .{2}e} {1: .{2}e}", x, y, prec) << endl; で解決しました。
443 名前:デフォルトの名無しさん mailto:sage [2025/06/21(土) 22:20:34.53 ID:07kyc98IM.net] >>440 https://kristerw.github.io/2021/10/19/fast-math/ ここには、「-fassociative-math」が今回の例に近いようだが、 同じものは載ってないと思うが。 以下は、近いが、今回のものとはまた違う : (C1 / X) * C2 ↓ (C1 * C2) / X
444 名前:デフォルトの名無しさん [2025/06/22(日) 12:29:48.51 ID:4aXQSYOG0.net] ・人間の思考「脳波」は頭蓋骨の外に漏れない 人間の脳は発光していた!「脳が放つ光」の観測に初成功 2025.06.19 12:00:38 THURSDAY https://nazology.kusuguru.co.jp/archives/179808 >>カナダ・アルゴマ大学(Algoma University)の最新研究で、ついにこの「脳の光」を頭蓋骨の外から観測することに成功したのです。 >>UPEは細胞の代謝活動、特に酸化反応によって発生する副産物の一種です。 >>以来、UPEはあらゆる植物や動物の細胞からも確認されており、生体内の酸化ストレスや老化、さらにはがんの診断補助にも応用が期待されてきました。 >>脳は体の中で最も代謝が活発な臓器のひとつであり、神経活動に伴って活性酸素が多く発生します。 >>チームは今回、20人の健康な成人を対象に、特殊な装置を用いた実験を実施しました。 >>被験者は真っ暗な部屋に座り、頭には脳波計を装着。 >>その周囲には、光電子増倍管(PMT)と呼ばれる極微弱な光を検出する装置が配置されました。 >>そして被験者には、目を開ける/閉じる、あるいは音楽(120BPM)を聴くといったシンプルなタスクを行ってもらい、その間のUPEと脳波の変化を同時に測定したのです。 ☆>>まず、脳からのUPEは背景光(周囲の空気中のノイズ)とは明確に異なる変動パターンを持つことが判明したのです。 >>とくに後頭部(視覚野)と側頭部(聴覚野)から検出された光は、安静時でも一定のリズムと変動性を示し、他の部位とは異なるスペクトル的特徴を持っていました。 >>さらに目を閉じたときに増える「アルファ波」と呼ばれる脳波の活動と、UPEの強さが同期していることも発見されました。 >>これはつまり、脳の電気的な信号(脳波)と、化学的な代謝反応(UPE)が連動していることを意味します。 >>この成果は、従来のfMRIやPETスキャンのような「重装備で高コスト」な装置を使わずとも、非侵襲・低刺激で脳機能の状態を“光”から読み取る可能性を示すものです。 >>研究者たちはこの新しい手法を「光脳波記録(photoencephalography)」と名付けました。
445 名前:デフォルトの名無しさん mailto:sage [2025/06/22(日) 12:39:57.32 ID:gKjr8htc0.net] 光コンピューティングやないかい
446 名前:デフォルトの名無しさん mailto:sage [2025/06/22(日) 17:00:05.82 ID:CnBC1yms0.net] 光というのは電磁波だったと思うが。
447 名前:デフォルトの名無しさん [2025/06/22(日) 17:03:00.89 ID:ZWGsAnaU0.net] ニュータイプ近づいたな
448 名前:デフォルトの名無しさん mailto:sage [2025/06/22(日) 18:48:20.68 ID:/yOBM7d0d.net] スレ違い。
449 名前:デフォルトの名無しさん mailto:sage [2025/06/22(日) 19:08:02.78 ID:x4CLaAtVM.net] >>444 みたいな書き込み、完全にスレチ このスレのみならず、板自体が壊れてしまう。
450 名前:デフォルトの名無しさん mailto:sage [2025/06/23(月) 01:01:04.29 ID:Gvg9upbV0.net] hissi.org/read.php/tech/20250622/NGFYUVNZT0cw.html 毎回こことPythonスレだけ荒らしてるアホ
451 名前:デフォルトの名無しさん mailto:sage [2025/06/23(月) 01:12:15.09 ID:Btl+IikW0.net] 統失の間でもPythonとC++は認知されてるってことでしょ 名誉ですなぁ
452 名前:デフォルトの名無しさん mailto:sage [2025/06/23(月) 14:29:01.81 ID:zsxUyp330.net] C++でpythonのライブラリを作るのが気持ちいいかなみたいな。 ん? 普通はpythonのライブラリって何で書かれているんだろう。
453 名前:デフォルトの名無しさん mailto:sage [2025/06/23(月) 16:02:13.08 ID:n3O4Zcz+M.net] >>450 Rustスレにも投稿されてたで。
454 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 09:31:18.32 ID:17zM306Da.net] pythonのモジュールはpythonでも描けるが もちろんCでも描けるしC++でも描ける 最近はRustで描くのが楽で良い
455 名前:デフォルトの名無しさん [2025/06/24(火) 17:31:46.42 ID:Sa2uRHN0H.net] Rustは良い言語かもしれんが、自分には 必要ない。
456 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 18:59:56.02 ID:FRc1H2/gM.net] >>455 同意
457 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 19:19:29.25 ID:8wBejQ5/0.net] >>454 なんで、AIはPythonで書かれるんだろうな 謎だな…
458 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 19:22:51.87 ID:hfqdv+Ay0.net] Rustに静的ダックタイプ入ったら使うかどうか考える。 設計をカッチリできるプロジェクトでもなければRustはキツくない? c++もコンセプト制約変数とか入らんかな。 変数レベルで静的ダックタイプにして、クラス継承は無くしたい。
459 名前:はちみつ餃子 mailto:sage [2025/06/24(火) 19:44:21.82 ID:s2rFPvAe0.net] C++26 にはリフレクションがようやく入る見込みで、これを使えばダックタイピングのような仕組みをライブラリで実現できる。
460 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 20:15:46.49 ID:S1fYPTVc0.net] >>457 モジュールを書く人とAIを書く人が別だからじゃろ
461 名前:はちみつ餃子 mailto:sage [2025/06/24(火) 20:45:25.03 ID:s2rFPvAe0.net] AI の専門家がプログラミングの専門家というわけでもないしな。
462 名前:デフォルトの名無しさん mailto:sage [2025/06/24(火) 20:49:18.38 ID:8wBejQ5/0.net] >>460 というと?
463 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 02:55:12.43 ID:v8FRsUWIM.net] NSCがC++を廃してRustを推しているのは、中国のUnrealEngineへの牽制か?
464 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 02:59:40.78 ID:v8FRsUWIM.net] NSA だ。
465 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 03:19:10.72 ID:P3qvmtvK0.net] >>463 unreal engineって、 中国が株主でしょ
466 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 07:43:46.78 ID:NfgrBwV2p.net] UEはアメリカのゲーム企業が作ったものなんだが・・
467 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 12:38:45.11 ID:deRGahNkM.net] スマン。中国が作ったものだとばかり思っていた。
468 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 12:41:11.49 ID:3UJQKTFB0.net] ったく、こりだからよお
469 名前:デフォルトの名無しさん [2025/06/26(木) 17:13:34.04 ID:zdpAcYpu0.net] 悪意のあるVSCode拡張機能を検出できる「VSCan」 https://gigazine.net/news/20250625-vscan/ ※上記の 本体プログラミング改造で改造コードを仕込む場所や攻撃ポイントを割り出せる ※緒繼Lと下記のプャ鴻Oラムでエラ=[コードをメモャ梶[^上に無いbゥを調べて別のャvログラムを走b轤ケるとエラーャRードから親友bナきるかが割り緒oせる などいろいろと使用可能 AIを活用した完全自律型の侵入テストツール「XBOW」がHackerOneのランキングでついに人間を抜いて1位に https://gigazine.net/news/20250625-hackerone-xbow/ 上記のプログラムと電波障害などで生じたエラーなどでで無理やりセキュリティーほーホールを見つけれる
470 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 17:16:52.94 ID:jAlq/lgY0.net] まず自分の書き込みにAI活用しろよって思った
471 名前:デフォルトの名無しさん [2025/06/26(木) 18:27:21.16 ID:o/InY5NNH.net] 藁
472 名前:デフォルトの名無しさん [2025/06/26(木) 21:29:08.64 ID:zdpAcYpu0.net] AndroidスマホでもiPhoneでもAIモデルをローカルで実行してチャットできる無料アプリ「Cactus Chat」レビュー https://gigazine.net/news/20250626-cactus-chat-android-ios-ai-local/ インターネット接続不要でAIモデルをローカル実行できる「LM Studio」にMCPサーバーへの接続機能が追加される https://gigazine.net/news/20250626-lmstudio-mcp/ 上記のAIとマクロ機能を使用すればAIのみで会話できるようになる ボイス・トォ・スカル「神や幽霊」の声はこれで行っているのか? マクロ機能の拡張でインターネットにも自動で書き込みが可能になる
473 名前:デフォルトの名無しさん mailto:sage [2025/06/26(木) 22:43:52.27 ID:CNaMzIfEd.net] スレ違い。
474 名前:デフォルトの名無しさん [2025/06/28(土) 01:04:10.64 ID:ILdMmS8aH.net] gcc4.6から4倍精度入ってるみたいですねえ。 Visual C++では入っているかな。調べてみます。
475 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 01:17:47.38 ID:Ewd2t68S0.net] fortranで使うからね gccはバックエンドから対応する必要がある機能を他フロントエンドのために入れるときはほぼC言語にも拡張として入れてくる
476 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 07:36:59.43 ID:7fEtq2hP0.net] 新たなクラスを作ってまえばいいのではないでしょうか。
477 名前:デフォルトの名無しさん [2025/06/28(土) 10:51:00.28 ID:ILdMmS8aH.net] C++23からfloat128_tがサポート予定だけど まだ詳細は決まってなさそう VS2022ではまだみたい。gccも13.0以降?
478 名前:デフォルトの名無しさん [2025/06/28(土) 15:20:29.63 ID:CPXhvy7f0.net] >>477 MSのサポート掲示板だかコミュニティBBSだでVSは128_tやる気なし(一応要望は受け付けるけど)、みたいなの読んだ気がする。
479 名前:はちみつ餃子 mailto:sage [2025/06/28(土) 15:55:10.80 ID:mCCHdrx+0.net] C++23 では「そのような型があるなら std::float128_t として提供されることもある」というオプショナルなもので、あまりあてにならない。 https://timsong-cpp.github.io/cppwp/n4950/basic.extended.fp#4 ハードウェアとかツールチェインとかの都合もあるだろうし。
480 名前:デフォルトの名無しさん [2025/06/28(土) 16:00:47.16 ID:ILdMmS8aH.net] うーむ。残念
481 名前:はちみつ餃子 mailto:sage [2025/06/28(土) 16:13:42.13 ID:mCCHdrx+0.net] std::float128_t が提供されるときは拡張浮動小数点型 (extended floating-point type) でなけりゃならないみたいだからクラスとして定義できない。
482 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 16:59:30.25 ID:VJLy78nc0.net] float128_tがあってもFLT_MAXは64ビットという闇
483 名前:はちみつ餃子 mailto:sage [2025/06/28(土) 18:19:57.03 ID:mCCHdrx+0.net] >>482 ??? float128_t と FLT_MAX にどのような関係があるのか意味が分からない。
484 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 18:26:24.23 ID:uZW6Klue0.net] float 4バイトだろ 32ビットだぞ
485 名前:はちみつ餃子 mailto:sage [2025/06/28(土) 19:30:31.51 ID:mCCHdrx+0.net] float が 4 バイトなのに 8 バイト相当な値が FLT_MAX として定義されている (言語仕様に準拠していない) 環境があるという意味?
486 名前:デフォルトの名無しさん mailto:sage [2025/06/28(土) 19:40:49.68 ID:Ewd2t68S0.net] 最大の浮動小数点型を表す定数のどれかと間違えたんでしょ __int128があってもintmax_tが64ビットのままみたいな話のfloat版のつもりだったと思う
487 名前:デフォルトの名無しさん [2025/06/29(日) 08:57:18.64 ID:9LYz8h1TH.net] インターネットからファイルをダウンロードするのに、現在のc界隈ではどんなライブラリを使用してるの? vc2010あたりなら、標準で使えていたけど今でも使えるのかしら?
488 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 10:59:10.19 ID:zQA4sk9y0.net] ちょっ質問なのですが class Fooの中で構造体型PrivateStructがprivateな型として定義されており、 PrivateStruct型のFooのprivateなメンバFoo::m_stもある状況に対し、 Fooの外でauto&でもってPrivateStructの型を使用できて、 あまつさえFoo::m_stの値を読んだり書いたりできたりしてカプセル化神話が崩壊したんだけど これっておま環? (コード) https://ideone.com/slBA72
489 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 12:56:56.18 ID:RnCZLFSE0.net] >>487 Windows が前提なら WinINet を使うのが素直なやり方だと思う。 規格の多少の更新などがあっても OS の側で対処してくれるからアプリケーションはリビルドする必要すらなく長期的に使えることが期待できる。 マルチプラットフォームを考えるなら Curl が楽かなぁ……。
490 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 13:04:25.17 ID:RnCZLFSE0.net] >>488 アクセス指定は識別子の可視性であって、間接的なアクセスも含めた一切の利用を禁止するわけではないよ。
491 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 13:14:06.51 ID:zQA4sk9y0.net] 上のコードの >auto& st = x.refStruct(); // stはFooのprivateな型だがビルドが通る。 が識別子PrivateStructの可視性を無視してくれる理由がわからんぬ…… これ >PrivateStruct& st = x.refStruct(); と書いたら型の名前PrivateStructの可視性がprivateなのでもちろんエラーになる
492 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 13:18:58.11 ID:zQA4sk9y0.net] 訂正orz ×: >PrivateStruct& st = x.refStruct(); ○: >Foo::PrivateStruct& st = x.refStruct();
493 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 13:37:38.54 ID:RnCZLFSE0.net] >>491 > 識別子PrivateStructの可視性を無視してくれる理由 識別子 PrivateStruct を使っていないから。 この場合は x.refStruct() という式から型を推論するので型名 (であるような識別子) の可視性は関係ない。 プライベートなデータメンバ m_st だってその参照を外へ持ち出してるだろ。 外で m_st という名前でアクセスできないが m_st に対応するオブジェクトへのアクセスは (アクセス経路があるなら) アクセス指定に左右されない。 同様に、プライベートに定義した型を型名ではアクセスできないが型を使えないわけではない。
494 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 13:59:10.64 ID:zQA4sk9y0.net] >識別子 PrivateStruct を使っていないから。 >この場合は x.refStruct() という式から型を推論するので型名 (であるような識別子) の可視性は関係ない。 なんで? 不完全な型の参照はエラーになるのだから コンパイラは型推論の際Foo::PrivateStructという完全な型の情報まで突き止めているはず…… なんでFoo::PrivateStructの可視性を無視してくれるのや…… 無視せずエラーにする言語仕様もあり得たはず ていうかエラーにならないのがおま環でない証拠がいまのところ無い……
495 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 14:09:12.19 ID:RnCZLFSE0.net] >>494 名前に対する使用制限である旨がはっきりと書いてある。 https://timsong-cpp.github.io/cppwp/n3337/class.access#1.1
496 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 15:12:39.04 ID:FAAHlPSo0.net] >>494 でもFoo::PrivateStructを指すpublicなtype aliasがあったらやっぱりエラーにしないで! とか言ってきたらはっ倒すぞって感じの言語仕様やなあ
497 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 15:29:55.25 ID:PWOccKtm0.net] プライベートメンバーの参照を返す関数を public でアクセスできる設計の方が驚き
498 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 15:52:20.20 ID:RnCZLFSE0.net] >>497 これ単体で見るとおかしいがプロキシパターンなどでそういう構成になることはある。
499 名前:はちみつ餃子 mailto:sage [2025/06/29(日) 16:51:17.70 ID:RnCZLFSE0.net] すまん。プロクシパターンではないな。 見当違いなことを書いてた。 まあこの場合は言語機能の確認のサンプルだと思うから設計がどうこうはあまり気にしなくていいんじゃね。
500 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 19:25:35.84 ID:TdQ2JxNKa.net] たしかに直感的には auto で private な型を推論してしまうのはヤバくね?という感覚になってしまうが 続くレスで指摘されてるとおり private な識別子だからといって外に持ち出せないわけではないので(それを禁止するほうが弊害が大きい) そういうもんだと思ってプログラマが注意するしかないな 元々 C++ はやり方次第で言語仕様の本来の目的を外れたヤバい方法がいくらでもつかえる言語であり どんな場面でも常にプログラマは注意を払うべきなので、そういう C++ の"性格"がこの場面でも出たというところか こういうのがどうしても気になり完全な"性格"の言語が欲しいなら、他の言語にいったほうがよい
501 名前:デフォルトの名無しさん mailto:sage [2025/06/29(日) 19:47:06.28 ID:ivfL45vHM.net] >>489 libcurl でいいと思う。便利だし。 curlコマンドと同じように使えるはずだし。
502 名前:デフォルトの名無しさん mailto:sage [2025/06/30(月) 19:44:03.19 ID:etdu4EFd0.net] 長い名前空間の扱いの質問なのですが、 例えばA::B::C::DみたいなクラスD内でP::Q::R::SのようなクラスSを使用していて ヘッダーファイルが namespace A::B::C { public class D { void foo(P::Q::R::S& s); }; } みたいな感じになるのですが、実際にはこのP::Q::R::Sが非常に長く正直見苦しいです かといってusingをヘッダー内で使うのは良くないですよね? こういう場合にP::Q::R::Sの部分を簡潔な表記にする方法はありますでしょうか
503 名前:デフォルトの名無しさん mailto:sage [2025/06/30(月) 20:47:28.37 ID:CUK0Fuvn0.net] namespace pqrs = P::Q::R::S でいいんじゃない?
504 名前:デフォルトの名無しさん mailto:sage [2025/07/01(火) 21:41:31.12 ID:W7Fp4vWi0.net] Sしか使わないならusing P::Q::R::S;
505 名前:はちみつ餃子 mailto:sage [2025/07/01(火) 22:22:06.69 ID:kHEih0Y20.net] >>504 using P::Q::R::S; したらもしも using namespace A::B::C; したときに P::Q::R::S も探索対象になってしまう。 使う側に余計な影響を与えないようにするには別名をつけるほうがより良い。
506 名前:デフォルトの名無しさん [2025/07/03(木) 00:24:37.09 ID:ye5zZInN0.net] エンベデッド分野は今でもC/C++が主流なの? AIに任せられない分野だから生きのこれそうで気になっておりまする
507 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 09:26:35.93 ID:q23h/8z8a.net] 良いんじゃね
508 名前:はちみつ餃子 mailto:sage [2025/07/03(木) 11:06:49.67 ID:4Hn86Ej50.net] >>506 組み込みシステムも多様なので性質や規模によるでしょ。 リアルタイム性が重要なところでは C/C++ は主流のままだと思うけど、プロジェクト全体が C/C++ だけで構成されることは少なくなるんじゃない?
509 名前:デフォルトの名無しさん [2025/07/03(木) 11:57:31.86 ID:0Ka09OV10.net] リアルタイム性はOSがやることだし 言語関係ないよ
510 名前:デフォルトの名無しさん [2025/07/03(木) 12:22:21.27 ID:dQk6sKVB0.net] Javaや.NETはGCでストップ・ザ・ワールドが発生するからリアルタイムに弱いらしい 最近は目標停止時間を1ms以下に抑えるGCもあるけど、あくまでも目標であって保証ではないからね
511 名前:デフォルトの名無しさん mailto:sage [2025/07/03(木) 15:27:43.14 ID:d0nwmVKl0.net] >>509 イベントスレッドでIOされてもOSがなんとかすると思ってんの?
512 名前:デフォルトの名無しさん [2025/07/04(金) 08:50:43.54 ID:fF3rQ1JLa.net] 組み込み リアルタイムOS これほど曖昧な言い回しは他に無い
513 名前:はちみつ餃子 mailto:sage [2025/07/04(金) 10:17:03.12 ID:wZ441BSd0.net] >>509 リアルタイム性が重要なところというのはまさにそのリアルタイム OS のことで、それらを書くのに C/C++ が主流という話なんやで。 そんで既存の OS を使う場合でも次にアプリケーションを用意すれば動くというわけではなくて、組み込みシステムなら大抵の場合にデバイスドライバも書かなければいけないし、 OS が面倒みてくれる範囲は小さい。 低レイヤの整備がすでに整っている状況ならアプリケーションはもうちょっと言語の選択肢はあるかもね。
514 名前:デフォルトの名無しさん [2025/07/04(金) 10:58:10.60 ID:8a61AjkK0.net] リアルタイムOSでないOSで、リアルタイム性重視ならそうだが リアルタイムOSで作るなら言語は何でもいい
515 名前:デフォルトの名無しさん [2025/07/04(金) 10:59:28.16 ID:8a61AjkK0.net] 例えば24時間365日止まってはいけない産業用制御なんて C++でも何でもない
516 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 11:09:00.86 ID:7dTC+3QP0.net] シェルで済むならシェルにしなさい。(UNIX)
517 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 11:13:55.32 ID:lC93JhvQ0.net] 言語なんでもいいって? リアルタイムOSってそもそも言語の選択肢少ねーだろ
518 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 11:19:04.05 ID:lC93JhvQ0.net] >>512 いうほどあいまいか? せいぜい中身がLinux、Windowsでアプリのインストールも自由みたいなやつだけだろ
519 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 20:28:14.57 ID:wNUogzY00.net] >>511 ちょっI/Oしたらやっぱリアルタイム性に影響出るの?! んまー秒単位でwaitして帰ってこないみたいな極端なI/Oポートがあったらそうかもしれないが
520 名前:デフォルトの名無しさん mailto:sage [2025/07/04(金) 20:39:26.88 ID:wNUogzY00.net] >24時間365日止まってはいけない産業用制御 冗長構成かフェイルオーバーするような枠組みとしての取り組みが第一優先な希ガス…… ソフトウェアーの冪等性により同じバグが同じタイミングで発生して冗長構成が無意味化するする危険性については 十分テストしてバグを撮ったのちに起動タイミングをずらすなどの工夫を行えばポアソン分布の同時確率か何かに従って無視できうる(と思う さすがに原子炉の制御とかだとプロセス単体も形式検証して他分野よりもっと十分検証するらしい(間接伝聞
521 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 12:14:15.08 ID:JEWbe+UQ0.net] そんなレベルはラダー図で書くやろ
522 名前:デフォルトの名無しさん mailto:sage [2025/07/05(土) 12:31:12.20 ID:yj3snSzGM.net] というかリアルタイムOSの話から関係ない24/365システムの話を出すあたりよくわかってないことを雰囲気で話すタイプの人でしょ
523 名前:デフォルトの名無しさん [2025/07/05(土) 20:19:54.08 ID:iY4IPiMb0.net] >>521 C++ではないわな
524 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 06:14:16.80 ID:B20RUTJT0.net] 質問なのですが ケースA) std::stringstream ist("A B"); char c1, c2, c3; に対し、ist >> c1; ist >> c2; ist >> c3; とすると ist >> c2 は正常に読めて、ist >> c3 を実施した時点で!ist.good()かつist.eof() となってgetc()と類似のEOF検知挙動なのですが (ちなみに読み取った文字は c1='A'、c2='B'。c3の読み取りは行われない ケースB) std::stringstream ist("A B"); std::string s1, s2, s3; に対し、ist >> s1; ist >> s2; ist >> s3; とすると ist >> s2 を実施した時点で早々に!ist.good()かつist.eof() となって挙動が相違し (ちなみに読み取った文字列は s1="A"、s2="B"。s3の読み取りは行われない ケースC) しかしBの後に空白を追加してstd::stringstream ist("A B "); とすると、 ist >> s2 は正常に読めて、ist >> s3 を実施した時点で!ist.good()かつist.eof() となってgetc()と類似のEOF検知挙動になる (ちなみに読み取った文字列は s1="A"、s2="B"。s3の読み取りは行われない となってケースB)とケースC)で共通に使えるような最終要素まで読み取り完了判定ロジックが無く std::istream神話が崩壊したんだけどこれっておま環? 一体どうすれば……orz
525 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 06:16:00.70 ID:B20RUTJT0.net] 確認用サンプルコード: https://ideone.com/Guifzs
526 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 06:47:52.68 ID:B20RUTJT0.net] とりま上のコードからフォークしたソースコード https://ideone.com/4WPZtB の parse_as_string_with_common_logic(std::istream& is, std::string& s, bool& bErr) みたいな判定処理にしたらケースB、Cを共通に扱えるような印象 なのですが正しくはどうすればよいかわからん……
527 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 07:26:05.90 ID:oIAQiRlj0.net] 一般的な話ならchar以外の>>で一貫した挙動を期待するのに無理がある 期待した文字が来なかったらungetするかどうか?ファイル最後の改行をどうするか?シグナルが来たら?とか色々あるし ケースBで言えば"B"の後に文字が続いていればs2に含まないといけないのだから内部的にはケースAで言えばc3まで試し済みの状態 EOFフラグを見るのではなく例外で受け取ったほうが確実
528 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 10:18:34.40 ID:RFZXbMVga.net] ケースB、Cを共通に扱える ist.eof()でいいやん Bが一回余分にループするのは気持ち悪いけど 気にしたら負け
529 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 10:53:22.37 ID:14zTNASB0.net] 普通はoperator bool(または fail())を使う
530 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 10:56:09.61 ID:B20RUTJT0.net] >>527 だいたいわかりた is >> s ライブラリの「>>」の仕様的にsが任意のクラスで有り得るから、 例えばsが複素数クラスで2つの要素を読み取るブツなのに対し要素を1つだけ読み取れなかった場合、 みたいなのが生じ得るがis.eof()ではそこまで表現できない故にライブラリ側では char以外の一般のケースについて責任を持たないというと理解すた、 従って、test_parse_as_string_with_common_logic(const char* szInput, bool& bErr)を charの読み取りによってeof()判定するように直したわ これならiostreamの正当な使い方だけで構成されておりかつ目的を果たせているはず…… https://ideone.com/eaYGEt
531 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 11:00:55.07 ID:B20RUTJT0.net] >>528 >Bが一回余分にループするのは気持ち悪いけど いきなりis >> s してその直後のeof()を当てにするロジックである限り、 リンク先のケースBの挙動となり、最後の要素に引き続く空白文字がないとき 最後の要素が入力ストリームにあるのに受け取れないというもっと深刻な事態となる以下略 >>529 operator boolはis.good()と同じはず…… なおかつそれ単独では(is >> sのsがchar以外のとき)ケースBの解決になんね
532 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 11:06:26.76 ID:B20RUTJT0.net] ごめoperator boolは!is.fail()やった……orz
533 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 11:24:16.88 ID:B20RUTJT0.net] 二転三転してすまんこ考えを改めたはサーセン……orz 入力ストリームはシリアルポートみたいな途中で入力がブチ切れる危険性があるブツである こともあるから、 ケースB) (空白) (非空白文字列の期待する全体) ケースB') (空白) (非空白文字列が受信タイムアウトにより途中で切れたもの) の区別が!isになったというだけでは区別がつかない。一方、 (空白) (非空白文字列) (空白) まで受け取ったら、(非空白文字列) がタイムアウトにより途中で切れたものでないことが確実となりワカル 故に、ケースBやB'みたいな条件を扱うこと自体がライブラリの仕様想定外なのかもしれん…… 通常のテキスト読み込みでは行末に改行文字(空白文字のうち)が1文字以上あるから、この枠内で話が収まる。 Unixみたいに改行文字が '\n' 1文字だけな環境で、改行文字を読み飛ばして 呼び出し元に返さないgetline()みたいなやつで読んだ結果を istringstreamしようとするとケースBが顕在化するが、 この場合は強制的に末尾に空白文字を付けることができうる そうすればケースBは発生しない(ただし空白文字を付け忘れるとバグ
534 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 11:56:43.72 ID:wbQZP2jZ0.net] iostreamなんかをテキストの厳格なパースなんかに使わなければならない理由から考え直した方がいい
535 名前:デフォルトの名無しさん [2025/07/06(日) 12:20:19.64 ID:RFZXbMVga.net] 末尾で改行無しでeofが来るファイルは多い
536 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 12:43:07.86 ID:B20RUTJT0.net] >>529 ゴメ operator std::istream::bool() か std::istream::fail() だけでとりま解決したわスマンカッタorz https://ideone.com/Fd5zV6 オンメモリのストリームである std::istringstream であっても>>533 のケースB'に当たるケース (オンメモリなので非空白文字列でデータが終わっている場合)においてbadbitがセットされるっぽい この挙動がおま環でないかどうかはわからん……
537 名前:デフォルトの名無しさん mailto:sage [2025/07/06(日) 12:47:26.46 ID:B20RUTJT0.net] >>534 いまさらlex的な処理をgetc()で手で書いたりstrtok()に戻ったりしたくないし……
538 名前:はちみつ餃子 mailto:sage [2025/07/06(日) 13:40:09.19 ID:VHUnBvW80.net] パーサコンビネータ的なものを先に作るのがモダンな方法だが……。 汚い部分を抽象の向こうに押し込めるだけなので汚さが無くなるわけではない。 小さい規模だと愚直な方法が楽だったりするよ。
539 名前:デフォルトの名無しさん mailto:sage [2025/07/10(木) 15:17:59.65 ID:pWdjbLc50.net] C++を勉強して思ったのが C++って基底クラスをリストに登録させて 派生クラスの機能をひたすら実行させることに特化してるように思うのだけどこの考え方で合ってる? 要はリストありきな感じ
540 名前:はちみつ餃子 mailto:sage [2025/07/10(木) 15:54:02.04 ID:UMLMi9p20.net] >>539 ゲームのフレームワークでは全てのエンティティを登録してそれに対する更新を繰り返すというモデルがありふれているが、 C++ 的にそれが普通というわけではない。
541 名前:デフォルトの名無しさん mailto:sage [2025/07/10(木) 16:45:53.90 ID:1drjG1ps0.net] >>539 一度デバッガで実行をトレースしてみ?
542 名前:デフォルトの名無しさん [2025/07/10(木) 18:55:50.32 ID:y21Xxg220.net] >>508 な、なるほど 何にしても、この先生きのこるには C/C++ は必要そうだね Py や JS なんかだと若い衆がどんどん来るから負けそうだし・・・
543 名前:デフォルトの名無しさん mailto:sage [2025/07/10(木) 21:11:59.82 ID:pWdjbLc50.net] >>540-541 ありがとうございます リストを自作するなりstd::listを使うなりして printfみたいな文字出力をする時も、出力部分をタスククラスにぶっこんでラッピングして 出力は派生クラスでオーバーライドしたc->draw();みたいなのに任せる、というのはゲーム専用で他ではあまりされないんですね
544 名前:はちみつ餃子 mailto:sage [2025/07/11(金) 01:51:13.39 ID:/nWuXYnL0.net] C++ は設計理念のひとつとして「人に何かを強制しない」というのを挙げていて、やりたいように書けることを重視してる。 同じパターンでプログラムを書いているように感じるなら単にあなたがそのやり方しか知らないだけ。 分野ごとに大枠ではやりやすいパターンが定着していたりはするので、ひとつの分野だけ見ていると頻出パターンがあるように見えることはあるかも。
545 名前:デフォルトの名無しさん [2025/07/11(金) 11:58:09.09 ID:nUxw0t1Z0.net] BASICも同様の理念で作ればいいのに
546 名前:デフォルトの名無しさん [2025/07/11(金) 12:28:00.28 ID:36pXyECQ0.net] >>544 Z世代にはRuby on RailsやRustのほうが良いかもしれませんね
547 名前:デフォルトの名無しさん [2025/07/11(金) 14:36:44.91 ID:zLrVPFvnd.net] >>543 RustのDisplayやDebugなんてまさにそれだが
548 名前:デフォルトの名無しさん [2025/07/12(土) 13:34:42.02 ID:Y1veRsrW0.net] C++でデフォルトコンストラクタで確保したリソースだけデストラクタで破棄したくてコピーコンストラクタやコピー代入ムーブコンストラクタやムーブ代入で得たリソースはデストラクタで破棄させたくないときどうする? rustみたいな所有権システム必要になるんですか?
549 名前:デフォルトの名無しさん [2025/07/12(土) 14:19:56.77 ID:tjRcyRc80.net] なんでそんなことが必要なのかわからないけど、破棄するかどうかのフラグを持っておけばいいんじゃないの? 設計から見直した方が良いようなきがするけどw
550 名前:デフォルトの名無しさん mailto:sage [2025/07/12(土) 17:03:35.88 ID:BGsI/m1X0.net] >>548 俺もなんでそんなことが必要なのかわからないけど、pip使ってデフォルトコントラスタのオーナーだけにshared ptrでリソース管理させるとか? これだとバグが怖いから、素直にshared ptrでリソースを共有したほうがいい気がする。
551 名前:デフォルトの名無しさん mailto:sage [2025/07/12(土) 17:24:13.44 ID:1YAX70Df0.net] ゲームプログラムをマルチスレッドにするとき、何をマルチスレッドにするの? ストレージのロードとかはともかく
552 名前:デフォルトの名無しさん [2025/07/12(土) 18:45:10.30 ID:/RtKayKia.net] マルチスレッドにしたいものをマルチスレッドにする
553 名前:デフォルトの名無しさん [2025/07/12(土) 19:12:52.47 ID:LUVzIFWA0.net] 遠景のテクスチャのロードなんかは別スレッドかな? 当たり判定などのロジックは遅延なく1フレーム16ミリ秒以内にやらなきゃいけないのでメインスレッドでやるしかない ゲームでマルチスレッド使うのって難しいよね
554 名前:はちみつ餃子 mailto:sage [2025/07/12(土) 20:02:23.86 ID:5KyGwfre0.net] 排他処理が入ると並列化の恩恵がだいぶん減るので高速化の意図でマルチスレッドを使うなら排他が不要な部分を見つけるのが第一だね。 メモリなどの各種のリソース管理の後始末を別スレッドに任せるという例も聞いたことはある。 デストラクタが起動するとサブオブジェクトのデストラクタも連鎖的に起動するからワンフレームの時間が限られている状況では間に合わないということも起こる。 だからデストラクタは後始末が必要なリソースをテーブルに登録するだけにして、別スレッドが実際の後始末をするってことね。 もう使うことの無いリソースだというのは分かってるから排他は少なくてすむ。 (ヒープメモリの管理テーブルはスレッド共通だから排他がゼロとはいかないと思うけど。) 後始末が少しくらい遅れてもどうということはないし。
555 名前:デフォルトの名無しさん mailto:sage [2025/07/13(日) 11:30:27.40 ID:WDtYO/xJ0.net] まあ、 アクションとか以外の、1/60秒で同期させなくていい処理ですかね… 遠くのPhysXの物理とかもできるのかな… 数年ぶりで、レイトレーシングとか未経験だわ…
556 名前:デフォルトの名無しさん mailto:sage [2025/07/13(日) 11:36:28.87 ID:WDtYO/xJ0.net] >>554 コンテキストスイッチとか気にしないといけないですね… PlaystationとXboxとPCゲームで、それぞれに最適化とか大変そうですね…
557 名前:デフォルトの名無しさん [2025/07/13(日) 21:38:10.94 ID:e/4c/Agi0.net] ・人間は犯罪を起こす種族と言い切っている 地球はすでに丸見え、レーダー電波で宇宙人に居場所をさらしている 公開: 2025-07-13 21:00 https://karapaia.com/archives/524757.html >>明らかに人工的なもので、200光年以内にある知的文明なら、地球の場所を把握できる可能性が高い。 >>アレシボ天文台のような超高感度の望遠鏡を使えば、理論上は6万光年先からでも地球の電波を検出できるとされている。 >>に宇宙空間で“丸見え”の状態にあり、その状況は75年前から続いているのだ。問題は、彼らが友好的な文明であるという保証がまったくないことだ。 ★>>可能性としては、(我々人間のように)きわめて敵対的かつ侵略的な種族であるケースも十分にあり得る。
558 名前:デフォルトの名無しさん [2025/07/14(月) 12:26:06.28 ID:D5VD7WG/0.net] GPT-4.1超えの中国製AIモデル「Kimi K2」が無料公開される、複数のテストでGPT-4.1やClaude 4 Opusを打ち負かしエージェントタスクもこなす 2025年07月14日 11時10分 https://gigazine.net/news/20250714-ai-kimi-k2/ >>Kimi K2はベースモデルの「Kimi-K2-Base」と事後学習済みモデルの「Kimi-K2-Instruct」の2種類に分かれてリリースされています。以下の図は「Kimi-K2-Instruct」「DeepSeek V3」「Qwen3-235B」「GPT-4.1」「Claude 4 Opus」「Claude 4 Sonnet」「Gemini 2.5 Flash」のベンチマークスコアを並べたものです。Kimi-K2-InstructはすべてのテストでオープンモデルのDeepSeel V3とQwen3-235Bを超えるスコアを記録し、一部のテストでGPT-4.1やClaude Sonnet 4などの商用モデルに勝利しています。 ◇上記サイト内にダウンロードリンクがある
559 名前:デフォルトの名無しさん mailto:sage [2025/07/14(月) 14:37:25.45 ID:4jx6FCSc0.net] >>540 お前ゲーム作ったこと無いやろ・・・
560 名前:デフォルトの名無しさん mailto:sage [2025/07/14(月) 16:00:51.76 ID:sJl0ASyp0.net] ただエンプティ言いたいだけ違うんかと
561 名前:デフォルトの名無しさん mailto:sage [2025/07/14(月) 16:18:22.23 ID:CQ+aGKeG0.net] 画面描画FPS(frames per second)を固定させる為に、以下の待ち処理を入れるとFPSがメッチャ安定する: while (system_clock::now() < t_after_sleeping) { Sleep(0); } しかし強制フリーズさせてるみたいで、ハード痛めたりしないか不安なんだが。どうなん実際の所?詳しい人教えて
562 名前:デフォルトの名無しさん mailto:sage [2025/07/14(月) 16:27:01.51 ID:NLDJkZue0.net] マルチスレッドのセオリーとしてはSleepせずにビジーループするほうが問題 なんだけど、Sleepだと精度悪すぎてちゃんとFPS担保できるのか心配にはなる。動いてるならそれでいいけど
563 名前:はちみつ餃子 mailto:sage [2025/07/14(月) 17:49:12.87 ID:23SHNwVj0.net] >>561 定石と言えるレベルの普通の処理だよ。 既に指摘されているようにタイマーの精度の問題はあるので工夫を入れる必要はあるけど、 精度が悪くても処理が遅れる (想定より FPS が下がる) 可能性があるだけ。 どういう理屈で不安に思っているのかがよくわからないので何を間違っているのか説明できない。 Sleep(0) が何をやってるかわからない (これが何らかの危険な処理だと思っている) ってこと?
564 名前:デフォルトの名無しさん mailto:sage [2025/07/14(月) 20:03:36.26 ID:CQ+aGKeG0.net] test
565 名前:デフォルトの名無しさん mailto:sage [2025/07/14(月) 20:04:22.78 ID:CQ+aGKeG0.net] >>563 ありがとう。Sleep(0)が何をやっているかはわかっている
566 名前:デフォルトの名無しさん mailto:sage [2025/07/14(月) 20:05:51.19 ID:CQ+aGKeG0.net] >>561 のwhile中を空にする(Sleep(0)しない) > while中でSleep(0)する > while中でSleep(1)する(時間単位を1msにして待ち時間を1ms縮める) という具合にCPU占有率が上がる。精度は落ちるがSleep(1)を入れた方がCPUの負荷は減るので、何となく安心する。
567 名前:デフォルトの名無しさん mailto:sage [2025/07/14(月) 20:06:23.37 ID:CQ+aGKeG0.net] >>561 のwhileの中でSleep(0)しつつ準ビジー状態を強行するのがどれだけハードに悪影響なのか、その辺りの実績経験を盗みかった。卑しい盗人を助けてくれ下さい
568 名前:デフォルトの名無しさん mailto:sage [2025/07/15(火) 00:13:36.01 ID:KEPxDdxR0.net] C++スレ的にはthis_thread::yieldかと思ったんだが
569 名前:デフォルトの名無しさん mailto:sage [2025/07/15(火) 04:24:49.25 ID:4J45BJq00.net] >>561 グラフィックのAPIは何使ってる? 何と比べて安定したのかしらんけどそのやり方でディスプレイの出力と同期できるわけないのわかる?
570 名前:デフォルトの名無しさん mailto:sage [2025/08/04(月) 06:40:16.41 ID:0gfRmGh70.net] ちょっ質問なのですが unsigned long m_ulAbortReasonBmp; std::mutex m_mutex; std::atomic<unsigned long> m_ulBias; に対し、 m_mutex.lock(); m_ulAbortReasonBmp |= fooBmp; // (1) : m_mutex.lock()期間内 m_mutex.unlock(); m_ulBias.store(barVal, std::memory_order_release); // (2) : m_mutex.lock()期間外だがm_mutex.lock()期間の後 としたとき、 Q1. m_mutex.lock()している他スレッドから見て(1)、(2)の操作の順序(m_ulAbortReasonBmpが変化した後、m_ulBiasが変化する)は保証される? Q2. m_mutex.lock()していない他スレッドから見てんも(1)、(2)の操作の順序(m_ulAbortReasonBmpが変化した後、m_ulBiasが変化する)は保証される?
571 名前:デフォルトの名無しさん mailto:sage [2025/08/04(月) 07:34:20.02 ID:0gfRmGh70.net] Q1については、他スレッドから見てm_ulBiasのreadが m_mutex.lock()期間(クリティカルセクション)内のm_ulAbortReasonBmpへの書き込みより 先行するようなことが起きるとクリティカルセクションの意味が消失するから保証される Q2についてはm_ulBiasのreadがプロセッサコアにどう計画されるかわからないから m_ulAbortReasonBmpへの書き込みの後になることは一般に保証されない、 が、現在人類が手にしているクリティカルセクションの実装(lock期間に入るときと出るときそれぞれで いかなるreadもwriteも無差別にバリアする)により、lockしないスレッドから見ても順序が実質的に保証される、 でおk?
572 名前:デフォルトの名無しさん mailto:sage [2025/08/04(月) 08:33:59.43 ID:0gfRmGh70.net] 訂正orz、 Q2のケースでは保証されない 現在人類が手にしているクリティカルセクションの実装(lock期間に入るときと出るときそれぞれで いかなるreadもwriteも無差別にバリアする)のが真実だとしても、 それはm_ulAbortReasonBmpやm_ulBiasをwriteする側のスレッドがwrite順を守るというだけで、 m_ulAbortReasonBmpやm_ulBiasをreadする側のスレッドにはメモリバリアするコードが無いから read順を好きに計画され、writeした順でreadされる保証が無い
573 名前:デフォルトの名無しさん mailto:sage [2025/08/04(月) 08:41:31.47 ID:3rv0HXUI0.net] >ちょっ かわいい …舐めてんの?
574 名前:デフォルトの名無しさん mailto:sage [2025/08/04(月) 16:26:39.26 ID:Tt4A7oMm0.net] >>572 コードに無いreadの話が入ってくるのが意味がわからない 聞きたいことはwriteの順番が保証されるかではないのか? writeの順番は保証される
575 名前:デフォルトの名無しさん [2025/08/10(日) 21:35:26.79 ID:gXfPFnW/0.net] 男きたああああああああああ
576 名前:デフォルトの名無しさん [2025/08/22(金) 07:16:07.15 ID:iDw/vpGA0.net] 初心者だけど、 Pythonみたいにreturnを複数ってできないの? touple使うくらい?
577 名前:デフォルトの名無しさん mailto:sage [2025/08/22(金) 07:35:30.89 ID:8V9ySHS/0.net] 複数の値を一つにまとめればいいだけ 返す型次第
578 名前:デフォルトの名無しさん [2025/08/22(金) 08:55:40.38 ID:LQncxxKI0.net] 複数返したいならタプルでいいんじゃない 引数に出力渡すのが多いと思うけど
579 名前:はちみつ餃子 mailto:sage [2025/08/22(金) 10:34:20.59 ID:s1oN92u00.net] Python でも返却値として複数の値を返すことは出来ない。 Python で return にカンマ区切りで複数の式を書くとタプルになってる。 受け取る側で複数の変数を書いておけばタプルが分配 (unpack) されたりはするけど…… 関数が返却しているのはあくまでもひとつの値という理屈。 複数の値 (いわゆる多値) を関数が返せる言語はそれほど多くない。 LISP 系は多値のサポートがあることが多いけどそれ以外だと Go くらいじゃないかな? (マイナー言語だとわからんけどよく知られている主要な言語にはほとんどないと思う。) シンタクス的には C++ で return にカンマ区切りで複数の値を渡そうとしたとき、 つまり return 1, 2, 3; というように書いたときのカンマはカンマ演算子として解釈される。 カンマ演算子は左辺の結果を捨てる (評価はする) ので 3 だけが返却値になる。 C++ で複数の値をひとまとめにするには波括弧で囲む記法があって std::tuple<int, int, int> foo(void) { return {1, 2, 3}; } というように書けるんだが…… この波括弧は初期化の記法であってタプルのリテラルというわけではないのでそこんところは注意。
580 名前:デフォルトの名無しさん mailto:sage [2025/08/22(金) 10:49:05.94 ID:hiXhYkKD0.net] >>579 受け取る方はどうやって受ければいいのですか? 私の頭だと構造体で返せばいいかな なんつて
581 名前:デフォルトの名無しさん mailto:sage [2025/08/22(金) 11:06:34.54 ID:HM+/3rtsM.net] >>580 構造化束縛で取り出すのが楽 構造体を定義する手間が気にならないならそれでもいい
582 名前:デフォルトの名無しさん mailto:sage [2025/08/22(金) 11:49:05.11 ID:ZeYv0pFNd.net] C++も昔に比べれば随分と楽になった
583 名前:はちみつ餃子 mailto:sage [2025/08/22(金) 12:07:46.82 ID:s1oN92u00.net] >>580 タプルは単にタプル型の値なので普通に受け取れる。 auto bar = foo(); といったように書ける。 タプルから要素を取り出すのは std::get<0>(bar); といった要領になる。 受け取るときに変数に分配するやり方もあって atuo [r1, r2, r3] = foo(); というようにも書ける。 これを構造化束縛という。 おそらくこれが期待していたものなんじゃないか? この記法はタプルに限らずタプルライクな型、配列型、データメンバが全て公開直接メンバであるような型などであれば使える。
584 名前:はちみつ餃子 mailto:sage [2025/08/22(金) 12:23:44.06 ID:s1oN92u00.net] もし使っているコンパイラが MSVC なら MSVC のデフォルトでは C++14 になってるはずだからそのままだと構造化束縛を使えないかも。 (構造化束縛は C++17 から。) 私は MSVC を利用していないから具体的なやり方は知らんけど必要なら適当に設定してね。
585 名前:デフォルトの名無しさん mailto:sage [2025/08/22(金) 17:49:52.20 ID:hiXhYkKD0.net] どもです。構造化束縛ね。なんか聞いた事あるかなという程度だった。 使うかなぁ・・・
586 名前:デフォルトの名無しさん mailto:sage [2025/08/22(金) 21:41:35.66 ID:NcnZjMQ+0.net] 構造体ほど強いまとまりではなく、返り値だけのゆるいまとまりなら構造化束縛の方が便利だけどねぇ
587 名前:デフォルトの名無しさん [2025/08/22(金) 21:41:55.58 ID:iDw/vpGA0.net] >>579 std::tuple<int, float, long> foo(void) { return {1, 2.1, 99}; } atuo [r1, r2, r3] = foo(); って書いたら、 r1に1が、r2に2.1が入るの? まあそれでもいいかな PythonからC++に移植中で、ちょっと読みづらいと思ったので…
588 名前:デフォルトの名無しさん [2025/08/22(金) 21:45:40.16 ID:iDw/vpGA0.net] >>587 まあでも、なんで複数returnにしないのかね? outの引数が多すぎだわ
589 名前:デフォルトの名無しさん mailto:sage [2025/08/22(金) 22:11:20.77 ID:NcnZjMQ+0.net] Python でも複数return ってできないと思うけど? カンマ演算子でタプルを作って返してるだけでしょ
590 名前:デフォルトの名無しさん mailto:sage [2025/08/22(金) 23:03:10.61 ID:5NhjtIih0.net] そうやね。Pytnonのカンマは、言語仕様上は演算子とは一応区別されているみたいだけど、感覚的には演算子だよね。何で演算子ではないんだろうというのはちょっとした疑問だけど(1, みたいなのを後置演算子と呼ぶのはちょっと変とかそういうことかな?)
591 名前:デフォルトの名無しさん mailto:sage [2025/08/23(土) 01:30:59.35 ID:ynkOCuVA0.net] //こんな感じ? #include <iostream> #include <tuple> using namespace std; tuple<int, float, long> foo() { return {1, 2.1, 99}; } int main(){ auto [r1, r2, r3] = foo(); cout<<r1<<endl; cout<<r2<<endl; cout<<r3<<endl; return 0; }
592 名前:デフォルトの名無しさん mailto:sage [2025/08/23(土) 01:57:32.43 ID:HIKpDy1T0.net] 構造化束縛を調べてみたら fooの返り値はtupleでなくてもpairで返しても良さそうなんだけど どういうルールなの? キモい
593 名前:はちみつ餃子 mailto:sage [2025/08/23(土) 02:11:02.56 ID:CHT0FIec0.net] >>592 それがタプルライクの概念。 std::tuple_size の特殊化など、いくつかのインターフェイスを実装すればタプルと同じように扱ってくれる仕組み。 それとは別に配列の場合とか、全てのデータメンバが公開直接メンバなクラスもありということになってるのは単純に箇条書きで数種類のパターンを示す形になってる。 それほどパターンが多くはないがひとつの原則で表せるわけでもない。
594 名前:デフォルトの名無しさん mailto:sage [2025/08/23(土) 02:22:04.99 ID:HIKpDy1T0.net] >>593 >それほどパターンが多くはないがひとつの原則で表せるわけでもない。 キメぇよw
595 名前:デフォルトの名無しさん mailto:sage [2025/08/23(土) 09:17:36.36 ID:rBYkDYvT0.net] 構造的部分型とか静的ダックタイピングって呼ばれるやつ?
596 名前:デフォルトの名無しさん [2025/08/23(土) 13:12:32.34 ID:wVRYzYK20.net] >>591 int r1; float r2; long r3 r1, r2, r3 = foo(); って書きたいですね。Pythonみたく
597 名前:はちみつ餃子 mailto:sage [2025/08/23(土) 13:15:39.41 ID:DefMPT1k0.net] 代入のときは tie を使う。
598 名前:デフォルトの名無しさん [2025/08/23(土) 15:01:16.09 ID:p3yrvAiP0.net] テンプレートの黒魔術で脳汁出てからが本番
599 名前:デフォルトの名無しさん mailto:sage [2025/08/23(土) 15:37:03.06 ID:T+HzfXMC0.net] >>596 別の言語っぽくって考えは捨てた方が身のため
600 名前:デフォルトの名無しさん mailto:sage [2025/08/23(土) 19:08:06.22 ID:VwZegIlc0.net] 666!
601 名前:デフォルトの名無しさん [2025/08/23(土) 19:56:19.30 ID:k0uySdFmd.net] struct { int r1, float r2, long r3 } t; t = foo(); って描きたい struct に tuple からのコンストラクタを実装すれば良いのかな
602 名前:はちみつ餃子 mailto:sage [2025/08/23(土) 20:18:30.70 ID:CHT0FIec0.net] >>601 最初から foo がその型で返せばいいんでないの?
603 名前:デフォルトの名無しさん mailto:sage [2025/08/24(日) 12:07:46.50 ID:HqphwiLf0.net] C言語から続くカンマ演算子が分かってないんでは?
604 名前:デフォルトの名無しさん mailto:sage [2025/08/24(日) 12:09:48.21 ID:gU3L8vdd0.net] Pythonあがりだから型を定義する意味がわかってないんだと思う
605 名前:デフォルトの名無しさん mailto:sage [2025/08/25(月) 07:55:54.04 ID:O202BBJ90.net] a=10 a=’hello' 翻訳しながらだからできるんだろうけどね。
606 名前:デフォルトの名無しさん mailto:sage [2025/08/25(月) 08:19:19.75 ID:X23BjBGY0.net] >590 左辺にも現れるからじゃね?
607 名前:初心者プログラマー [2025/08/28(木) 17:50:07.17 ID:GULY1B8W0.net] cppでbazelでmediapipeのビルド方法を教えてくれる方はいませんか? 自分の環境 Visual Studio Community 2022 Windows11 64 ビット scoopでbazel 5.3.0 Python 3.10.0
608 名前:青木康善 mailto:sage [2025/09/07(日) 03:16:03.97 ID:Fgms30k2a.net] なんか、javaより簡単に思えてきました。
609 名前:はちみつ餃子 mailto:sage [2025/09/07(日) 06:54:14.37 ID:Ur1gsBeL0.net] そうか。
610 名前:デフォルトの名無しさん mailto:sage [2025/09/07(日) 07:39:38.11 ID:yhbLpr+z0.net] obj1=obj2; の後obj2を変更すると、obj1が書き換わってまってびっくりして その後、Javaが怖い親父です。
611 名前:デフォルトの名無しさん [2025/09/07(日) 13:56:14.79 ID:ZFShxqYO0.net] C/C++もポインタを代入するとそうなるよ
612 名前:デフォルトの名無しさん mailto:sage [2025/09/07(日) 15:17:34.87 ID:DiKqvn8B0.net] この親父他の言語ほぼ使えんだろ
613 名前:デフォルトの名無しさん [2025/09/07(日) 15:34:33.99 ID:AK/wIzqla.net] 普通 https://ideone.com/wGzMHW p=[3,1,2] q=p p[1]=0 print(q)
614 名前:デフォルトの名無しさん mailto:sage [2025/09/07(日) 16:53:15.89 ID:2DaEs5aKM.net] >>610 >>613 それはオブジェクトへの参照の競合が起きてる それぞれで書き換え更新または読み取り中の書き換えをすることでスパゲッティなコードを招いてしまう その競合をコンパイルエラーにして防いでくれるのはRustだけだと思う
615 名前:デフォルトの名無しさん mailto:sage [2025/09/07(日) 17:20:59.28 ID:yhbLpr+z0.net] >>614 c/c++なら、ポインタなのか参照なのか見ればわかるし、 まずコンパイラが型をチェックしますんで。はい
616 名前:デフォルトの名無しさん mailto:sage [2025/09/07(日) 17:34:06.57 ID:5bTmv8Qp0.net] 参照メインの言語で書き換えを頻繁に行うとそりゃ事故るよ、注意力にも限界がある 値の書き換えをするならC++のように変数が直接値を持つ言語がいいし 参照をメインにするなら関数型言語のようにimmutableを基本にするべきだ
617 名前:デフォルトの名無しさん mailto:sage [2025/09/07(日) 18:17:46.03 ID:kASsF2K3r.net] ないしは、q=p; ってしたときに、pがダメになってくれるか
618 名前:デフォルトの名無しさん mailto:sage [2025/09/07(日) 22:03:02.60 ID:2DaEs5aKM.net] >>615 C++では参照の競合があってもエラーとならず安全性は保証されないよ 例えば以下の挙動 std::vector<int> v{0, 1, 2, 3, 4, 5, 6, 7}; int& fifth = v[5]; v.push_back(100); std::vector<int> w{8, 8, 8, 8, 8, 8, 8, 8}; fifth = 555; std::cout << "v[5] = " << v[5] << std::endl; std::cout << "w[5] = " << w[5] << std::endl;
619 名前:デフォルトの名無しさん mailto:sage [2025/09/08(月) 07:59:15.17 ID:It1Ffdlu0.net] >>618 これわ別問題じゃないのですか。 にしても、おとろしい push_backされた時点で再構築されて、新規作成のオブジェクトの要素を保持してしまったで合ってますか?
620 名前:はちみつ餃子 mailto:sage [2025/09/08(月) 10:27:54.64 ID:bx3qX9/R0.net] 状況を一から説明すると…… これは fifth が古い無効になった場所を参照する可能性があることが問題。 std::vector の各要素は連続した空間に配置されることが保証されている。 要素の増減でその場所の都合が悪くなれば再配置される可能性があり、 再配置が起こったときは要素を指していたイテレータや参照は無効になるというルール。 無効なイテレータや参照を通じてアクセスしたら何が起こるかわからない。 再配置が起こる可能性がある操作については個々に仕様に書かれているけれど、 キャパシティを変更する (可能性がある) ような操作はどれも再配置が起こりえると覚えておけばいい。 そんでもってこれのややこしいところは「可能性がある」ってところで、 キャパシティをどれくらい拡大するか実装によって差があるし、 状況によっては場所を移動せずに大きさを伸ばせるかもしれない。 つまり問題が顕在化しないかもしれない。 一般論として倍々に延ばす実装がよく知られているからこの例では最初に要素を 8 個にして 顕在化しやすいようにしたんだろう。
621 名前:デフォルトの名無しさん mailto:sage [2025/09/08(月) 10:47:28.92 ID:It1Ffdlu0.net] >>620 どもです。要素数8ってのもさすがって感じでした。
622 名前:デフォルトの名無しさん mailto:sage [2025/09/08(月) 22:24:25.56 ID:EA0JjXQaM.net] >>620 今回の問題に限ればその通り ただし問題の本質は二つの参照(変数fifthとpush_back呼び出し時の参照)を使ったこと 今回はダングリング参照で問題を分かりやすく示したがメモリ問題もvectorも本質ではなく任意のデータに対する参照で問題が起きる 既に参照fifthを持つ状況で同じデータを指す別の参照を関数push_backに渡してデータが書き換えられた 参照fifthが指す値は当初から値が変更されてしまったりダングリングで無効な値になる可能性がある これが二つの参照の競合による問題で値がいつの間にか書き換わってしまっていることでバグも誘発する 両方の参照が書き換えを伴わないreadonlyの時のみ安全になる 片方もしくは両方の参照が書き換えを伴うと安全でなくなる
623 名前:デフォルトの名無しさん mailto:sage [2025/09/08(月) 23:06:53.70 ID:HoahUzIM0.net] 再配置が行われるものに参照使って、その生存期間を超えてアクセスするのは未定義動作になるわな。C++に慣れてればそんなコードは書かないが、初級者向けではない。readonly より、lifetime の問題でしょう
624 名前:デフォルトの名無しさん mailto:sage [2025/09/09(火) 00:29:11.16 ID:TMUamLpP0.net] 参照が無効になる条件は規定されてるし、先にcapacity設定するとか避ける方法も用意されてる 「問題の本質」とやらはただのライブラリ仕様の無理解だろ 分かりにくいとか間違えやすいとかの批判なら分かるけど
625 名前:デフォルトの名無しさん mailto:sage [2025/09/09(火) 07:24:41.95 ID:DVL1/TmTM.net] >>623 >>624 申し訳ないがcapacityや再配置の話はしていない lifetimeや参照が無効になる話もしていない まずそれらを頭の中から消し去って考えよう 元々の話である同一データに対して参照が二つ持った時の話のみをしている もちろんvectorは登場してもしなくてもいい
626 名前:デフォルトの名無しさん mailto:sage [2025/09/09(火) 07:29:27.85 ID:DVL1/TmTM.net] 元々の話とは>>610 や>>613 でこれらが参照の競合の最も単純な例 様々な言語で発生してもちろんC++でも生じる 同一データに対して複数の参照を持つと他の参照によっていつの間にか指していたデータの値が書き換わってしまう これがバグやコードのスパゲッティ化を引き起こす最も大きな原因の一つ そのためreadonlyでない限り複数の参照を避けるのが好ましい そのため競合する参照を禁止している言語もある
627 名前:デフォルトの名無しさん [2025/09/09(火) 10:47:02.21 ID:g327vfuJd.net] readonlyでない競合する参照を禁止している言語もある
628 名前:デフォルトの名無しさん mailto:sage [2025/09/09(火) 12:16:08.28 ID:iPWQv8Oa0.net] はいはい線型論理言いたいだけ
629 名前:デフォルトの名無しさん mailto:sage [2025/09/10(水) 00:51:51.50 ID:BnR46AnOa.net] >>618 これはvにpush_backしたところでキャパ超えて別の場所にリアロックされ、ともない元のvの領域が空になって、即座にwがスポンとそのvが元あった場所に配置されたってことなのですか?
630 名前:デフォルトの名無しさん mailto:sage [2025/09/10(水) 02:12:52.51 ID:IF/zSGeMd.net] そうだよ。 規格上は何の保証もないから、処理系とかによっては全然違う結果になるかもしれないけど。
631 名前:629 mailto:sage [2025/09/10(水) 10:07:49.21 ID:3vsmg39oa.net] >>630 どうもありがとう
632 名前:デフォルトの名無しさん [2025/09/10(水) 10:13:08.62 ID:zTYInGVv0.net] >再構築されて新規の要素を保持してしまったで合ってますか こう聴かれると「違う」と返事したくなる
633 名前:デフォルトの名無しさん mailto:sage [2025/09/10(水) 18:40:20.64 ID:Vv9EwJFH0.net] 未定義動作だからな たまたま鼻から悪魔が出る代わりにそうなっただけだ
634 名前:デフォルトの名無しさん mailto:sage [2025/09/10(水) 22:18:27.54 ID:RAO/BxQt0.net] 参照の競合という用語に違和感。並行性に関わる競合状態 (race condition) の話をしようとしているのか?
635 名前:デフォルトの名無しさん mailto:sage [2025/09/10(水) 22:31:03.50 ID:BZTqerG60.net] してない
636 名前:デフォルトの名無しさん mailto:sage [2025/09/22(月) 23:24:45.15 ID:ZT49UQS30.net] でわ 簡単?な話題を。 int data{}; ってやります? int data{0}; ってやります?
637 名前:デフォルトの名無しさん mailto:sage [2025/09/23(火) 06:55:15.77 ID:S9rfzcfC0.net] int data = 0; ってやる
638 名前:はちみつ餃子 mailto:sage [2025/09/23(火) 10:47:53.44 ID:0b1Ncss10.net] auto data = 0; とか、型が明示的なのが好みなら auto data = int(); といった選択肢もある。 私は int data = 0; 派だけど。
639 名前:デフォルトの名無しさん mailto:sage [2025/09/23(火) 10:57:08.68 ID:NP1ck5iL0.net] >>638 autoを使う理由は?
640 名前:はちみつ餃子 mailto:sage [2025/09/23(火) 11:12:21.28 ID:0b1Ncss10.net] >>639 暗黙的であれ明示的であれ初期化子に型があるのだからそれとは別にもう一度型を書くのは二度手間と言える場合がある。 どういう考え方をとるべきなのかは場合による。
641 名前:デフォルトの名無しさん mailto:sage [2025/09/23(火) 11:17:00.61 ID:NP1ck5iL0.net] >>640 autoは曖昧だから、ゆるいプログラム用だね シビアなプログラムは無理
642 名前:デフォルトの名無しさん mailto:sage [2025/09/23(火) 12:32:51.63 ID:zwbfimRS0.net] >>638 イテレータの返しを受けるオブジェクトはauto使うと便利みたいな
643 名前:デフォルトの名無しさん mailto:sage [2025/09/23(火) 14:23:55.04 ID:SO+rqWsF0.net] >>641 テンプレート作るときには必須になる場合もある ゆるいって理解は雑
644 名前:はちみつ餃子 mailto:sage [2025/09/23(火) 14:48:06.92 ID:0b1Ncss10.net] 前提条件を変えると何でも言えてしまう。 とりあえずここでは発端は >>636 なのだから変数 data の型が int であり (多相にはしない) 内容はゼロで初期化するという狭い仮定を置いたほうがよかろう。 auto を持ち出したのは変に話題を曲げてしまったな。すまぬ。
645 名前:デフォルトの名無しさん mailto:sage [2025/09/23(火) 20:34:08.12 ID:3YWvMRZsr.net] 今北 いまさら人に聞けない auto って、右辺の型もそのまま左辺にコピーしてきてよ、って感じで使ってるんだけど その認識で間違ってない? 落とし穴とかある?
646 名前:デフォルトの名無しさん mailto:sage [2025/09/23(火) 20:39:56.49 ID:7uroOMzl0.net] 右辺が式の場合もあるし その時自分が思ってた型とautoの型が一致するとは限らないところとか
647 名前:デフォルトの名無しさん mailto:sage [2025/09/23(火) 21:26:37.10 ID:qWXNEai60.net] autoで手抜きしすぎるとあとでソース追うときにエライ苦労することあるから気を付けろよ
648 名前:デフォルトの名無しさん mailto:sage [2025/09/23(火) 21:34:42.79 ID:NP1ck5iL0.net] >>647 Pythonとか、 型が書かれてないから追いづらいよね
649 名前:はちみつ餃子 mailto:sage [2025/09/24(水) 02:24:38.07 ID:hHyw0Adk0.net] >>645 その認識でおおよそ正しいが変則的な部分もある。 auto foo = { 1, 2, 3 }; みたいに書くと initializer_list に推論されたりするのは知らないとちょっとびっくりするかもしれない。 それと修飾子などを組み合わせで使うことも出来る。 const auto* bar = &baz; みたいに。
650 名前:デフォルトの名無しさん mailto:sage [2025/09/24(水) 07:20:39.19 ID:tMR45KsJ0.net] >>649 何の目的であるの? C#的にゆるくなるだけだな…
651 名前:はちみつ餃子 mailto:sage [2025/09/24(水) 08:23:07.29 ID:yL+cLVSS0.net] >>650 ゆるいというのがどういう意味で言ってるのかわからないからなんとも言えない。 特に有用なのはテンプレート内で、たとえば template<class T> void foo(T x) { auto bar = baz(x); // baz は関数テンプレートだとする // ここでなんやかんや } みたいなのがあるとき auto を使わずに型を合わせて書こうとすると template<class T> void foo(T x) { decltype(baz(x)) bar = baz(x); // baz は関数テンプレートだとする // ここでなんやかんや } みたいになってわずらわしい。 初期化子の型をそのまま持ってくれば良いときに型を明示しても可読性に貢献しないし、簡便な記法があると楽。
652 名前:デフォルトの名無しさん [2025/09/24(水) 12:48:43.78 ID:4f1PT/5nH.net] std::make_sharedとか使うと行が長くなりがちだからauto便利
653 名前:デフォルトの名無しさん [2025/09/24(水) 23:18:51.30 ID:OQUpbPvH0.net] autoでしか出来ないこともあるから奥が深い
654 名前:デフォルトの名無しさん mailto:sage [2025/09/24(水) 23:47:45.55 ID:wXWMV3aG0.net] 罠仕様が仕込まれてるってだけでは
655 名前:デフォルトの名無しさん mailto:sage [2025/09/25(木) 06:56:54.48 ID:iHrblX0Rr.net] Rust派に言わせれば、C++が罠らしいぞw でもそのC++が、今の俺を生んだ
656 名前:デフォルトの名無しさん mailto:sage [2025/09/25(木) 16:58:42.68 ID:tx4jrZ/E0.net] 有用なときもあるけど、ライブラリ用のコードで乱発するとメンテナンスが大変 可読性メンテナンス性を考えるなら、冗長でない限りはちゃんと書いた方がいい >>651 それもbaz(buz?)の戻り値の型はTから導出出来るんだから、よほどややこしくない限りはそれ(decltypeで手抜きせずに)を書いた方が可読性メンテナンス性の面では良い
657 名前:デフォルトの名無しさん mailto:sage [2025/09/25(木) 17:00:57.66 ID:/3f9OB3n0.net] >>656 お前テンプレートプログラミングの素人さんだよね
658 名前:デフォルトの名無しさん mailto:sage [2025/09/25(木) 20:40:29.81 ID:tx4jrZ/E0.net] >>657 自己紹介乙w Expression Template使って線形代数のライブラリ作った人間だが、ETで利用者がauto使うとどういう問題が起きるか答えてみ まさか分かりませんとか言わないよな? テンプレート使ったライブラリ(てか標準ライブラリ)を"利用する"しかしたことのない人間が調子に乗るな
659 名前:デフォルトの名無しさん mailto:sage [2025/09/25(木) 20:43:04.50 ID:nRsNESWS0.net] なんか「その理論を作ったのは私ですが」みたいなものを感じる 技術発表の際の怖い質問とかなんとかのやつw
660 名前:デフォルトの名無しさん [2025/09/25(木) 20:43:46.25 ID:ofoI5OnU0.net] 言葉ならなんとでも言えるわな
661 名前:650 mailto:sage [2025/09/25(木) 20:44:29.25 ID:hN2fGih80.net] >>651 ふーん 便利だね でも、templete自体が何だか好きじゃないわ…
662 名前:650 mailto:sage [2025/09/25(木) 20:46:08.51 ID:hN2fGih80.net] >>656 ちゃんとっって、型を? 型が書いてないと、パット見でわからないよね…
663 名前:デフォルトの名無しさん mailto:sage [2025/09/25(木) 20:54:22.86 ID:tx4jrZ/E0.net] >>662 そう&同感 ぱぱっと書いて何やってるかもすぐ分かるような場面(戻り値がイテレータとか)ではそりゃautoでいいと思うけどねぇ
664 名前:デフォルトの名無しさん mailto:sage [2025/09/25(木) 21:36:33.99 ID:SUv+BSiy0.net] 今ならconceptを使うのが筋が良いんだろうな 他の言語みたいに型制約を書かずにジェネリクスを使えるけど、これは良くも悪くもだよね 楽と言えば楽だけど
665 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 01:34:47.37 ID:aJA0eUoF0.net] >>658 リポジトリ晒して まさか出せませんとか言わないよな? テンプレート使ったライブラリ(てか標準ライブラリ)を"内製する"しかしたことのない人間が調子に乗るな
666 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 01:53:11.78 ID:IAhZoqBcM.net] >>658 端的に言って > それもbaz(buz?)の戻り値の型はTから導出出来るんだから、 ここだよ 関数テンプレートなんだから型が導出できるとは限らない なぜお前は断言したのかな? 導出できない例にぶち当たったことがないからだよな
667 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 07:26:52.27 ID:uQKo8FSG0.net] >>665 >>668 煽ればタダで教えてもらえると思ってるいつものアホか >導出できない例 あるわけないだろどうやって実体化するんだよwwwwww
668 名前:デフォルトの名無しさん [2025/09/26(金) 08:15:01.31 ID:FGFv/5hn0.net] conceptはテンプレートだけじゃなく普通の変数制約にも使えればなぁ。 継承がほとんどいらなくなる。
669 名前:デフォルトの名無しさん [2025/09/26(金) 10:28:59.69 ID:UkFmEBgMa.net] >>647 判ります
670 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 11:12:51.14 ID:TfDLIQWg0.net] 手抜きというか情報を重複させないためにはautoが必要 苦労するのは型情報を追えないツールが悪い
671 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 11:53:52.65 ID:IRzSnzQy0.net] >>648 ああ、おそろしいあの言語は 素人にはササッと組めて楽チンだろうけど大掛かりなものは無理だろうな 想像しただけで脳が震えて耳から溶けて出てきそうだ
672 名前:はちみつ餃子 mailto:sage [2025/09/26(金) 12:02:33.14 ID:E9e6Z1Un0.net] expression template を auto で受けるとまずいってのは Eigen みたいな設計の話かな。 あれはムーブがない時代の設計だから一時オブジェクトの参照を保持してしまう (先に一時オブジェクトが解体されて寿命管理が破綻する) のが問題なのであって、解決のための仕組みが与えられたにもかかわらずそれを使ってない設計が悪い。 expression template の仕組み上でどうしても解決できないというわけではないし auto のせいでもない。 ムーブのコストすら許容できないだとか、古い C++ (C++03 以前) もサポートしなきゃならないみたいな事情があるなら「すまんけどこのライブラリを使うときは注意して」というべき筋合いの話で、「auto なんか使っとるからじゃ!」みたいな態度はおかしいだろ。
673 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 12:09:27.62 ID:uQKo8FSG0.net] >>672 >のが問題なのであって 違う。ETの場合、関数(演算子オーバーロード含む)が返すのは、式の構造を表すオブジェクトなのでそれをautoで受けると式の展開が行われず、計算処理の無いコードになってしまう それを逆手に取ってauto経由で展開のタイミング遅らせることもできるけどね あとETの利点はムーブどうこうで解決できる問題だけではないし、 誰も「ETを万人が使うべき」だなどと言っとらんよ、何が気に入らんかったの? で、はちみつお前いつも「知ったかぶりしていい加減なことを言う奴」に怒ってる割に、自分も同じ事してるよな
674 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 12:11:01.51 ID:uQKo8FSG0.net] あと >「auto なんか使っとるからじゃ!」 一言も言ってないんだが。流れ読み直しておいで
675 名前:はちみつ餃子 mailto:sage [2025/09/26(金) 12:54:00.88 ID:E9e6Z1Un0.net] >>672 > autoで受けると式の展開が行われず、計算処理の無いコードになってしまう 書いてなかったが評価タイミングは適当な関数で明示的にする前提を置いてた。 未定義を踏むのは他の何と比べても駄目だ。単に思ってた結果と違ったなんてのは重要じゃない。 > 誰も「ETを万人が使うべき」だなどと言っとらんよ、何が気に入らんかったの? 日常的には使わないケースだからこそだ。 それが auto の問題点のように挙げられてただろ? ライブラリのほうが C++ の自然な習慣に合わせるのが筋なのにさ。
676 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 13:15:19.27 ID:4po4sxfpp.net] >>657-658
677 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 13:19:26.24 ID:4po4sxfpp.net] >>675 あと、ETで式の評価が発生するのは関数の呼び出し時ではない。どうでもいいけど あと俺が作ったのは4次元まで(行列なら4x4まで。ゲーム用なので)だからヒープ使わんのでそもそもムーブどうこうは関係無いし、勝手によそのライブラリの未定義の話を持ってこられても困る
678 名前:はちみつ餃子 mailto:sage [2025/09/26(金) 13:57:45.37 ID:E9e6Z1Un0.net] >>677 eigen は例として話題に出したつもりだったが余計だったな。 端的に主旨を言えば expression template の原理的には auto で受けれるように作ることは可能、かつその方が親切な作りだろうという話をしてる。 お前がどんな設計をしたのかなんてそれこそ俺には知ったことじゃないし、知りようもない。 お前のライブラリで auto で受けれないのはお前がそう設計しただけの話なので、 それを根拠に auto がどうこう言ってもなんの足しにもならん。
679 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 14:04:20.28 ID:4po4sxfpp.net] >>657-658 ETの話はここで出した。 で、俺のautoの使い方に関する意見は>>656 だ 自分が何をやってるか良く考えてからレス書き直せ
680 名前:はちみつ餃子 mailto:sage [2025/09/26(金) 14:08:11.66 ID:E9e6Z1Un0.net] >>679 悪い設計のせいで利用者に不自然な書き方を強いるライブラリを作ったという話だということは理解してる。
681 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 14:13:42.65 ID:4po4sxfpp.net] あといちいち知ったかぶってるバカに教えてやるのも腹が立つが、普通数値演算でET使うときは代入演算子やコンストラクタに式を渡した場所で初めて式を展開するんだよ (autoでわざと評価を遅延させることも可能だと書いただろアホ) Eigenでも多分そう もちろんboost::spiritとかの構文解析ならパース処理の関数に渡すまで展開しないだろうが
682 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 14:14:19.90 ID:4po4sxfpp.net] >>680 不自然なのはお前の、「スキルに見合わない自尊心」だと思うぞ
683 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 14:24:32.42 ID:4po4sxfpp.net] バカが屁理屈書いてきそうだから再三言うが、>>658 は>>657 を叩くために出した問いに過ぎない 「意図しないコードになる」という話 これだからお前には絡みたくないんだよマジ鬱陶しい
684 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 17:03:47.95 ID:iKKvsVQ80.net] お前ってのははちみつのこと言ってるのかね? 自分から絡んどいて何言ってんだろうコイツとしか思えんけど
685 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 17:53:41.26 ID:uQKo8FSG0.net] >>684 で、>>666 の導出出来ない例って何?www
686 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 19:18:42.84 ID:+hZbpaFa0.net] >>685 ラムダの型導出できないだろ? なんでこんなのも知らんのにえらそうにしてんの? あと https://wandbox.org/permlink/q5sTF1hp76f7jpnq とかな この例でfooでもif constexprを使えばautoはなくせるがそんなことやって可読性とかほざけない 他にもパターンあるぞ 謝罪してお前が作ったらしいヘボライブラリ公開したら教えてやってもいいぞ
687 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 19:32:01.31 ID:uQKo8FSG0.net] 屁理屈にも程がある 導出出来なきゃどうやって実体化するんだよ、Tしかテンプレートパラメータが無い状況でT以外に依存するものがあるのか? まさか結果がTに依存するテンプレートになったら「導出出来てない」とかほざくの? Tに依存するコンテナのイテレータと何も変わらんよそれ
688 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 20:12:50.41 ID:uQKo8FSG0.net] てかその例でauto使わずに戻り値格納するのにif constexpr使うしかないと思ってるとかどんだけ経験不足なんだ・・・(はっきり処理分けする必要がある場合を除く) そんなクソみたいな例ならさすがにdecltypeかauto使いたくなるが(そもそも使うなと言ってないんだが)、conditionalも知らんのかお前は 必死に探してきてご苦労さん
689 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 20:41:40.17 ID:aJA0eUoF0.net] あの…そろそろ言っとくが おもろいこと書いたヤツが優勝な? 2ちゃん5ちゃんの原則だぞ
690 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 20:46:36.85 ID:uQKo8FSG0.net] >>665 はおもろいと自分で思ってんの?w
691 名前:デフォルトの名無しさん mailto:sage [2025/09/26(金) 20:59:48.54 ID:+hZbpaFa0.net] >>687 おじいちゃん、ラムダの例で詰んでんのわかる? わかんない? わかんないかぁ
692 名前:デフォルトの名無しさん mailto:sage [2025/09/27(土) 00:06:32.90 ID:ov4hhnsF0.net] やっぱautoはゆるいね C#とかPython的な感じ…
693 名前:デフォルトの名無しさん mailto:sage [2025/09/27(土) 05:08:15.66 ID:rNLW6nkI0.net] C++は自由なんだよ 変な風にも使えるし、傍で見てたらめちゃくちゃにもなる
694 名前:デフォルトの名無しさん mailto:sage [2025/09/27(土) 05:36:45.87 ID:p3kzti810.net] 自分が使った方がいいと思った時は使う。 しかないよ。後は規約や上司に従うぐらいか。
695 名前:デフォルトの名無しさん mailto:sage [2025/09/27(土) 11:22:44.98 ID:0x5FUGdK0.net] 久々にC++スレらしくなってておっちゃん楽しいよ
696 名前:はちみつ餃子 mailto:sage [2025/09/27(土) 17:37:01.17 ID:nSvwU9re0.net] >>681 コンストラクタや代入演算子で実際の計算を起動する方式も支持があるのは知ってるよ。 だからその代表例として有名どころの Eigen を話題に出したのだし、そこに齟齬はない。 その上で唯一の方式ではないし悪い設計だと言ってる。 私に反論するならどうしてそんな方式を取るのか利点 (悪い設計ではない理由) を説明すべきだった。 「数値計算で expression template を使うときは普通」なんて情報量ゼロのことを書かれても何の意味も感じられない。 コンストラクタや代入演算子をトリガーにするのは expression template を最適化として使う考え方だ。 つまり見かけ上は普通に式を書いてるだけなのに実は高速化しているというのがキモで、普通の式である「かのように」見える抽象化に意味がある。 実際の型を意識せざるを得なくなった段階で抽象化は破綻してる。 auto を使ったら何が起こるかを意識しなければならないのはライブラリ設計の失敗なんだよ。 隠れていたりいなかったりする半端な抽象化層を悪い設計と呼ぶのは間違ってるか? > 再三言うが、>>658 は>>657 を叩くために出した問いに過ぎない > 「意図しないコードになる」という話 そんなので意図しないコードになってしまうような作りのライブラリは出来が悪いという話なのはかわらん。 様々な事情に配慮してそうならざるを得ないということもあるというのならわかるが、 そうじゃなくて「それが普通なんだ」と思い込んだ狭い見識での判断なんだろ? 型を書くか auto にするかはスタイルの問題で、どちらを使うかで挙動が切り替わってしまうような設計のライブラリが本当にまともか?
697 名前:デフォルトの名無しさん mailto:sage [2025/09/27(土) 17:54:13.79 ID:iipvXy1W0.net] よほど悔しかったんか知らんが、恥の上塗りやめたら? autoをC++に取り込んだ人達は、お前が調子に乗るために提案したわけでも採用したわけでもなかろうよ
698 名前:デフォルトの名無しさん [2025/09/27(土) 19:49:03.02 ID:k7oMySGea.net] >>696 八光さんに同意だけど それだとC++が設計ミスと言う結論になりかねない
699 名前:はちみつ餃子 mailto:sage [2025/09/27(土) 20:00:56.28 ID:nSvwU9re0.net] C++ が設計ミスだらけなのは今更な話だろ。
700 名前:580 mailto:sage [2025/09/28(日) 18:27:48.51 ID:MSQtxm6D0.net] 解決しますた!
701 名前:はちみつ餃子 mailto:sage [2025/09/28(日) 19:20:47.09 ID:pjQge+jC0.net] そうか。
702 名前:デフォルトの名無しさん mailto:sage [2025/09/29(月) 19:03:56.70 ID:ALxfRd8b0.net] VSCode(WSL)のclang-tidyで質問です 関数にconst付けるのを警告する「readability-make-member-function-const」って奴ですがDoSave()関数にも警告が出ます 可能ならgetterのみに付けたいのですが皆さんこれはどうされてますか? 無効にしてるか、無視してるか、const付けてるか、その他何かやってますか? C++の環境構築は初めてなので助言をいただけるとありがたいです よろしくお願いします
703 名前:デフォルトの名無しさん mailto:sage [2025/09/29(月) 19:56:30.29 ID:BDszbKFL0.net] こういうこと? 要はconst性を「セーブさせたくない」という符丁に使いたいのかな class Hoge; // DoSave()持ち void foo(Hoge& h1, const Hoge& ch2) { h1.DoSave(); //ゆるす ch2.DoSave(); //ゆるさない } そんな変なことやめとけとしか思わないけど、どうしてもそうしたい理由があるなら言ってみ
704 名前:デフォルトの名無しさん mailto:sage [2025/09/29(月) 20:49:50.37 ID:Qgirjd9Z0.net] const_cast<Hoge*>(&ch2)->DoSave();
705 名前:デフォルトの名無しさん mailto:sage [2025/09/29(月) 22:22:15.60 ID:ALxfRd8b0.net] >> 703-704 すみませんサンプルを載せるべきでした ソース: double Point::X(){return x;} void Point::X(double value){ x=value;} ヘッダ: static Point { public: double X(); void X(double value); private : double x=0; }; clang-tidy を実行すると「double Point::X()」のX部分で「Method 'X' can be made const (readability-make-member-function-const)」という警告が出ます 調べてみると「constを追加して、内容が変更されないことを明確にすべき」らしいです ソース:double Point::X() const {return x;} ヘッダ:double X() const; 上記だけなら問題無いのですが、下記のような関数にも同じ警告が出てしまいます ソース:void Sample::DoSave(){ ファイルの保存処理 } ヘッダ:void DoSave(); この場合、getterではなく処理なので、const は付けるべきでは無いと考えてます そこで質問ですが、clang-tidy で静的チェックを行う場合「readability-make-member-function-const」の扱いはどうすべきなのか気になった次第です 「無効にすればいいのか」と思いながらも、C#のプロパティではないので、「C++は変更されないことを明示した方が分かりやすいのか?」とどのように設定すべきか悩んでいます よろしくお願いします 環境は下記:VSCode、ubuntu 22.04 (WSL)、C++ 17、clang-tidy-15
706 名前:デフォルトの名無しさん mailto:sage [2025/09/29(月) 23:01:05.35 ID:jk3QzjEU0.net] NOLINT
707 名前:デフォルトの名無しさん mailto:sage [2025/09/29(月) 23:04:57.63 ID:rfIMSjI90.net] >>705 その場合const付けたほうが良い理由は「変更されないことを明示」することより constのインスタンスに対してその関数を呼べなくなることでは? ↓はエラーか警告(どっちかは忘れた)になると思う(constオブジェクトの非constメンバ関数は呼び出せない) void SaveData(const Sample sample) { sample.DoSave(); } void Sample::DoSave() const { ファイルの保存処理 } にしておけば、DoSaveは呼び出せる
708 名前:デフォルトの名無しさん mailto:sage [2025/09/30(火) 01:33:12.30 ID:Xmjd+d/v0.net] 処理だからconst付けないんじゃなくて、そのメンバ関数がPointクラスの中身を書き変えないことを保証するためにメンバ関数の後ろにconstは付ける つまり、Save処理はPointクラスを特段変更するメソッドではないだろ? だったらconstは付けるべき
709 名前:デフォルトの名無しさん mailto:sage [2025/09/30(火) 07:07:46.33 ID:NaKN2pJV0.net] >>705 つまり、constを本来の意味(中身を変更するかどうか)ではなく「getterであるかどうか」を示すラベルとして使いたいってことでしょ? で、何を持って「getterであるかどうか」はあなたの頭の中にしかない定義であって、そのlintはもちろんコンパイラもエディタも世のライブラリも知ったことではない それらをオレオレconstラベルに適合させるためにどうしたらいいか?というのがあなたの問うていることだ やっぱりどうしてそんなことがしたいのか全く理解できない
710 名前:はちみつ餃子 mailto:sage [2025/09/30(火) 08:58:44.76 ID:0fqHawiZ0.net] >>705 オブジェクトがなんらかのストレージを抽象化したものであると考えたらそのオブジェクトが const であるときはセーブ機能を使えないようにしたいというのはわからんでもない。 実際の管理は他の場所でやっていて窓口に過ぎないならメンバ関数に const を付加可能 (だがそうしたくない) なこともあるだろう。 それが良い設計かどうかは脇に置いてそうすることに決めたときに clang-tidy の警告はどうすればいいのかということなら、 例外的な状況なので例外的なものとして無視してもらうしか仕方ないんじゃないか。 NOLINT コメントを書いておくと clang-tidy はその箇所については警告を抑制してくれるよ。
711 名前:デフォルトの名無しさん mailto:sage [2025/09/30(火) 10:38:19.22 ID:Dzyyn8xKd.net] >>706-710 御返事がおそくなりすみません ご意見ありがとうございます 自分の理解不足と設計思想が間違ってるまたはずれてるんだと理解しました ・「readability-make-member-function-const」の指示にしたがってconstを付けるのが良い ・更に言うと-fixオプションで自動付与するレベルの内容 ・だけどNOLINTで無視もできるよ(無視してるとは言ってない) ってことで理解しました 勉強になりました ありがとうございます
712 名前:デフォルトの名無しさん [2025/09/30(火) 21:38:35.37 ID:bXNPhBlr0.net] VC++20のテンプレート制約で不可思議なことが起きるのだけど、以下の二つは同じ意味だよね? 1だと目的通りTParentに該当static関数<T>があれば適用、なければスルーという挙動になるのだけど、 2だと無くても適用されちゃって他を探しに行かずにオーバーロード未解決に陥るんだけどどういうことだろう? 1 template<typename T, typename TParent> concept HasSizeGetter = requires { (size_t)TParent::template get_size<T>(); }; template<HasSizeGetter<TParent> T> static consteval size_t get_require_space() { return TParent::get_size<T>(); } 2 template<typename T> requires requires { (size_t)TParent::template get_size<T>(); } static consteval size_t get_size() { return TParent::get_size<T>(); }
713 名前:デフォルトの名無しさん [2025/09/30(火) 21:40:50.61 ID:bXNPhBlr0.net] ちょっと書き間違えてたけど1はget_require_spaceじゃなくてちゃんと2と同じくget_sizeね
714 名前:はちみつ餃子 mailto:sage [2025/09/30(火) 23:39:48.15 ID:0fqHawiZ0.net] >>712 オーバーロード未解決という形で現れるのはよくわからないけど この場合はその関数テンプレートを使わなくても (呼び出さなくても) エラーになるのが正しい挙動だと思う。 get_size は依存名ではないのでテンプレートの定義時 (テンプレート実引数を当てはめる前) に名前のルックアップが試みられて失敗する。 requires 節はテンプレート引数の妥当性を検証する仕組みなのでテンプレート引数をあてはめなくても式が不成立になるようなのはエラー。 というのが私の理解なんだけどあんまり自信はない……。
715 名前:はちみつ餃子 mailto:sage [2025/09/30(火) 23:47:38.26 ID:0fqHawiZ0.net] >>714 これは TParent::get_size が存在しない場合の話で、 TParent::get_size が存在するけど TParent::get_size<T> の展開に失敗する場合はちゃんと次の候補が選ばれるはず。 (手元に MSVC がないんだけどオンラインコンパイラで一応の動作確認はした。)
716 名前:デフォルトの名無しさん mailto:sage [2025/10/01(水) 06:54:56.10 ID:O1Ml42XO0.net] >>715 そう、2の場合でもTParent::get_sizeはあるけど<T>とはマッチしない場合にはちゃんと1と同じ挙動になるんだよね TParentにstaticなget_sizeが全くない場合だと1と2で挙動が変わってしまう でも2って1をインラインに直接書いたものであって同じ意味だよね? だからrequiresがどういう意味を持つかとか以前に挙動変わってくる時点で不可思議なんだよね
717 名前:はちみつ餃子 mailto:sage [2025/10/01(水) 07:43:33.30 ID:XKqCU3PC0.net] >>716 1 の場合は get_size は依存名だ。 そこで解釈が違うよ。
718 名前:デフォルトの名無しさん [2025/10/22(水) 12:58:32.68 ID:6nuMV8zc0.net] C++26から入るらしい^^と[::]という二つの演算子はどういう用途に使うものなのでしょうか?
719 名前:はちみつ餃子 mailto:sage [2025/10/22(水) 13:31:13.53 ID:/iXiQCcE0.net] >>718 リフレクションで検索したら色々な例がみつかるよ。 構文要素を値として取り扱う、本物のマクロだ。
720 名前:デフォルトの名無しさん mailto:sage [2025/10/22(水) 19:35:11.69 ID:t2Chdy11a.net] ^^ ↑ちょっと顔にみえる
721 名前:デフォルトの名無しさん [2025/10/22(水) 21:43:50.71 ID:q+0a8lK20.net] ^^;
722 名前:デフォルトの名無しさん mailto:sage [2025/10/22(水) 21:55:39.76 ID:tW3LNod+a.net] ^^;ゞ
723 名前:デフォルトの名無しさん mailto:sage [2025/10/22(水) 22:05:42.67 ID:b6F/3uj70.net] ^^::←グローバル名前空間のリフレクション値
724 名前:デフォルトの名無しさん mailto:sage [2025/10/23(木) 05:29:13.93 ID:HOQCmR4+0.net] v^^
725 名前:デフォルトの名無しさん [2025/10/23(木) 21:41:47.99 ID:FPW1mHao0.net] 山崎渉
726 名前:デフォルトの名無しさん [2025/10/24(金) 14:17:57.63 ID:nAYKU6CIa.net] GGは へへ ミミ
727 名前:デフォルトの名無しさん [2025/10/29(水) 17:48:11.20 ID:KY7jGttbH.net] Y(^_^)Y なんすかこれ 口が違う。覚えてる人修正して
728 名前:デフォルトの名無しさん [2025/11/11(火) 14:16:42.56 ID:crDtfQHZa.net] バルタン星人のひと元気かな
729 名前:デフォルトの名無しさん mailto:sage [2025/11/13(木) 14:20:45.09 ID:jo2+4JNJM.net] 多分基本的な質問ですまんけど、参照型のメンバー持ったクラスをmove対応させるのってどうやんのが定石? ポインタにするしかない?
730 名前:はちみつ餃子 mailto:sage [2025/11/13(木) 14:53:55.31 ID:bJCWdXAy0.net] >>729 その参照が差す先のオブジェクトの所有権 (最終的に後始末する責任) を持っている状況ということ? ポインタを交換する手法がよく使われるのはヌルで無効を表現してるだけなので所有権を持ってるかどうかわかるフラグを立てれるならなんでもいいよ。 型システム的に表現するなら optional と reference_wrapper を組み合わせるのがよいかな。(optional は参照を直接には保持できない。)
731 名前:デフォルトの名無しさん mailto:sage [2025/11/13(木) 22:00:10.45 ID:oKSfQs8Q0.net] いきなりわからんorz
732 名前:デフォルトの名無しさん mailto:sage [2025/11/13(木) 22:38:55.22 ID:PBCTneT3M.net] >>730 なるほどサンキュー でもoptionは省きたいところ moveしたあとは使わない前提でこれはUBになる? class A { std::reference_wrapper<const std::string> m_s; public: A(const std::string& s) : m_s(s) {} A(A&& rhs) : m_s(std::exchange(rhs.m_s, *(const std::string*)nullptr)) { } };
733 名前:デフォルトの名無しさん mailto:sage [2025/11/13(木) 22:48:43.43 ID:qvmNyT2p0.net] ・T*(ナマポ)にする Pros: 一番素直、ムーブ後状態をぬるぽで自然に表現できる。 Cons: メンバ使ってるとこで*付けたり.を->に書き換えたりが必要。deleteとか加減算とか好き勝手できちゃう。今どきナマポとかダサい。 ・std::unique_ptr<T>やstd::shared_ptr<T>にする Cons: 多分セマンティクス違う(もともとはヨソのオブジェクト覗いてるだけでしょ?) ・std::referrence_wrapper<T>にする Pros: 参照の置き換えという意味でこれも素直。 Cons: メンバ使ってるとこに.get()をつける書き換えが必要。ムーブがコピーになるので抜け殻に参照が残って潔癖な人だとキショい。 ・std::optional<std::referrence_wrapper<T>>にする Pros: 型的に一番真面目なので型マニアにっこり。 Cons: 書くのめんどい。「何これ?」って聞かれたときに説明めんどい(未来の自分含む)。.get()必要。 ・メンバはT&のままにしてムーブコンストラクタとムーブop=の方で対応する Pros: 既に使われてる所の書き換え不要。 Cons: ムーブ関数書くのとメンテし続けるのがめんどい。抜け殻に参照先残る。 どれも完璧じゃないから好きなの選んでいいよ
734 名前:デフォルトの名無しさん [2025/11/13(木) 23:01:27.30 ID:/tchf03X0.net] unique_ptrと同様のもの(unique_ref)を作ればいいんじゃねえのって話だろ ただしptrはnullptrで無効を表現してるから 代わりにフラグを用意する class unique_ref{ T& ref;//参照 bool isValid;//無効判定 //コンストラクタ unique_ref(T&r):ref(r), isValid(true){} //ムーブ コンストラクタ unique_ref(unique_ref&& a){move(a);} //ムーブ代入 unique_ref& operator=(unique_ref&& a){move(a);} move(unique_ref&&a){if(this!=&a && a.isValid) ref=a.ref; a.isValid=false;} } てなかんじかと 知らんけど
735 名前:デフォルトの名無しさん mailto:sage [2025/11/13(木) 23:06:32.01 ID:pKRh1I850.net] 参照なんて引数と演算子オーバーロード以外で使ってもいいこと無くね?
736 名前:デフォルトの名無しさん mailto:sage [2025/11/13(木) 23:07:03.58 ID:qvmNyT2p0.net] そもそも所有権自分で保持してるメンバがもともとT&ってことはないだろ どっか遠くのオブジェクトを見えるようにしてるだけでしょ? (それはそれで設計的に焦げ臭いけど置いとく)
737 名前:デフォルトの名無しさん [2025/11/13(木) 23:07:46.30 ID:/tchf03X0.net] もしくはunique_ptrをunique_refでラップしてしまうのが楽か
738 名前:デフォルトの名無しさん [2025/11/13(木) 23:10:58.33 ID:/tchf03X0.net] >>736 たまにある 外部リソース(たとえばファイルハンドル)を一時的にクラスに保持して使いやすくするとか なんにせよ寿命を明示的に管理しておかないと後でやばいことになる
739 名前:デフォルトの名無しさん mailto:sage [2025/11/13(木) 23:14:39.55 ID:qvmNyT2p0.net] >>738 ファイルハンドルだとして、それを管理するクラスがファイルハンドルの値自体を持たずにヨソに置いて参照するのはなぜ? やっぱり意味がわからない
740 名前:はちみつ餃子 mailto:sage [2025/11/13(木) 23:20:38.76 ID:bJCWdXAy0.net] >>732 UB になる。 ポインタと違って参照自体は無効を表現できないのが C++ の基本ルールであり、 reference_wrapper でもそれは同じ。 それでもあえてやるなら適当にダミーのオブジェクトを作っておいてそれを参照していたら無効ということにするというようなことをできなくはないが……それはそれでちょっと不恰好だよね。
741 名前:デフォルトの名無しさん [2025/11/13(木) 23:22:41.52 ID:/tchf03X0.net] >>739 クラス内部でちゃんと管理するのがいいんだけど時には関数内クラスを定義してちょっとしたことを行うこともある(かも) その時には所有権を一時的にでも委譲しなきゃならなくなる
742 名前:デフォルトの名無しさん mailto:sage [2025/11/13(木) 23:30:06.73 ID:qvmNyT2p0.net] >>741 ハンドルは外部で持ったままで、その関数内クラスにはハンドルの参照を渡す(関数内クラスの参照メンバを外部のハンドルで初期化する)って言ってる?それ委譲とは言わないよ 委譲したからにはそのリソースはその関数内クラスの消滅とともに消えないといけないけど、そうなったら外部で持ってたハンドルの実体はどうなるの? どんなケースを想定してるのか全然わかんない
743 名前:デフォルトの名無しさん mailto:sage [2025/11/14(金) 12:19:28.56 ID:YW3kWFexM.net] >>740 までもnull objectはよく使ってるからそれにするわ 個人的にはすっきり でもc++の参照っていらん子やん?って気がしてならない class A { static constexpr std::string s_empty_str{""}; std::reference_wrapper<const std::string> m_s; public: A(const std::string& s) : m_s(s) {} A(A&& rhs) : m_s(std::exchange(rhs.m_s, s_empty_str)) { } };
744 名前:デフォルトの名無しさん [2025/11/14(金) 17:06:33.25 ID:sw2A38eb0.net] >>743 型無しのnullpointerが型システム(機能保証)を破壊しているから、型を強要する参照は必要。
745 名前:デフォルトの名無しさん mailto:sage [2025/11/14(金) 17:48:56.23 ID:d/VpWy+aM.net] >>744 古くね? そういうのはoptional使えってのが最近のやり方でしょ?
746 名前:はちみつ餃子 mailto:sage [2025/11/14(金) 19:18:46.50 ID:YeCIJNF30.net] >>743 参照は色々な場面で有用ではあるが、 D&E によれば最初の動機は演算子オーバーロードだと書かれている。 オブジェクトをコピーする必要がない (値をコピーせずに場所を渡せば充分) ような状況で参照がなくポインタを使うならいちいち &a+&b みたいにして書く必要が生じる。 いかにも煩わしいだろう。
747 名前:デフォルトの名無しさん mailto:sage [2025/11/14(金) 19:55:59.90 ID:p/1JbX4j0.net] C++より古いの新しいの含めて多くの言語が採用してるように参照は引数でのみ使用可能で良かったと思うよ
748 名前:デフォルトの名無しさん [2025/11/14(金) 20:35:30.63 ID:/xnnTPah0.net] >>747 他の言語はともかく、C++の参照は引数に限定されてないですよ。 int a = 10; int* pa = &a;
749 名前:デフォルトの名無しさん [2025/11/15(土) 10:22:10.37 ID:ncudN0/g0.net] 747は、(実際の仕様はそうなっていないけど)引数でのみ使用可能なら良かったのに……という意味だと思うぞ。
750 名前:デフォルトの名無しさん [2025/11/15(土) 19:11:12.30 ID:lfrbAWbT0.net] ああ >使用可能で良かったと思うよ ではなく、 >使用可能だったら良かったのにと思うよ って事ですか
751 名前:デフォルトの名無しさん mailto:sage [2025/11/15(土) 19:25:57.81 ID:3JdS/6Ib0.net] カスみたいな読解力
752 名前:デフォルトの名無しさん mailto:sage [2025/11/15(土) 19:35:13.09 ID:QqRirP4Fr.net] そんなコミュ力高かったら、石が友達なんて言わない
753 名前:デフォルトの名無しさん [2025/11/15(土) 19:39:44.33 ID:ncudN0/g0.net] 分かりやすいように749みたいに書いたけど、747で普通に意味が通じるので、「ではなく」というとちょっと違う気がするかな。言葉って難しい。
754 名前:デフォルトの名無しさん mailto:sage [2025/11/16(日) 01:00:07.67 ID:oagsDxeg0.net] こういう人が仕様書読んで実装すると思うとこわい
755 名前:デフォルトの名無しさん [2025/11/16(日) 13:18:16.47 ID:0LN83zrSa.net] 横からだけど >>747 で充分判る >>748 は本当に日本人か?
756 名前:デフォルトの名無しさん mailto:sage [2025/11/16(日) 13:32:50.84 ID:Xh/GBEYv0.net] C++ばっかりやっとるからだよ 日本語を使え
757 名前:デフォルトの名無しさん [2025/11/16(日) 16:38:31.73 ID:r6khXsKc0.net] >>755 >748だけど日本人だよ。 >747日本語の文法としておかしいと思うんだが分かるんか…。 こっちが年食ったんかなぁ…。
758 名前:デフォルトの名無しさん mailto:sage [2025/11/16(日) 16:49:19.65 ID:D8AV/AUw0.net] あんたは機能的非識字なんでしょ 歳とか関係ないって
759 名前:デフォルトの名無しさん [2025/11/16(日) 18:20:15.84 ID:fnmgx6dT0.net] 747は、日本語の文法としておかしなところは別にないけれども、748のような読み方も許すという点で多義的な文にはなっているかな。 「C++より〜ように」という前半の文脈があるので748のような受け取り方はしない方が普通だと思うが、文法的には748のような読み方も一応可能だろう。 「使用可能(ということ)で良かった」としたら、完全に一義的になっているとまでは言えないまでも、多少ニュアンスは明確になっているかな。そうでもないか。
760 名前:デフォルトの名無しさん mailto:sage [2025/11/16(日) 19:06:28.66 ID:B8gkzotY0.net] >>757 文字なんでニュアンスが伝わりづらいだけだよ 「この前の件だけど、両方出来るようになったよ」 「他と同じように片方のみで良かったと思うよ」 まあ誤解を与えない書き方とすると 「他と同じように片方のみで良かったのにと思うよ」 って感じで「のに」をいれた方が残念がっている様子が伝わってくるよね
761 名前:デフォルトの名無しさん [2025/11/17(月) 09:06:44.31 ID:g7E0m0EQ0.net] C++はよく分からないので、cpprefjpにはいつもお世話になっているんだけど、生文字列リテラルのところにある「改行が入力された場合、改行の制御文字 '\n' に変換される」というのは説明として正確なのかな。 raw文字列リテラルのところの規格にはそれっぽいことは書いていないように思うし、改行文字は通常の文字としてそのままraw文字列リテラルに含められるだけであって、別に「変換」とかはされていないんじゃないかと思うんだけど。
762 名前:はちみつ餃子 mailto:sage [2025/11/17(月) 10:18:46.23 ID:DdlSQj440.net] >>761 '\n' に変換するという説明は誤りだと私も思う。 規格内の例中では \n と同等というような説明はあるのでこれを変換と誤解したのかも? https://timsong-cpp.github.io/cppwp/n4950/lex.string#5
763 名前:はちみつ餃子 mailto:sage [2025/11/17(月) 10:27:40.74 ID:DdlSQj440.net] 余談だけど生文字列リテラルの扱いにはちょっと変な特別扱いがある。 C++ では処理の初期段階で行を連結 (改行を削除) してしまうことになっていて、その時点では各改行が生文字列リテラルの中なのかどうか認識してない。 https://timsong-cpp.github.io/cppwp/n4950/lex#phases-1.2 後でトークンを分割するときになって生文字列リテラルを認識したらその範囲では連結を「取り消す」という処理が入る。 https://timsong-cpp.github.io/cppwp/n4950/lex#pptoken-3.1 結果としては改行はそのまま含まれるだけなんだけど、理屈としては色々な操作 (変換?) はされてる。 ただ、これは C++ の言語の解釈の話であって処理系の実装方法ではない。 つまり結果が同じであれば実装方法は問わないので連結してから取り消すのではなく連結の例外にしてもかまわないし、 生文字列リテラルを普通の文字列リテラルに変換するような手法もあるのかもしれない。
764 名前:デフォルトの名無しさん mailto:sage [2025/11/17(月) 20:16:57.16 ID:3c799E+W0.net] >>761 gccにCRLF改行のソースコードを食わせてもLF(\n)だけになったので変換はされてるんじゃないか 他のコンパイラの動作はしらね
765 名前:デフォルトの名無しさん [2025/11/18(火) 02:43:23.41 ID:oTdu6LNz0.net] >>763 削除されるのは「\(改行)」(Pythonとかでは明示的な行継続と言われているやつ)みたいなやつだけで、(\ に後続しない)単なる改行はwhitespace文字として扱われるだけかと思っていたんだけど。 >>764 改行をLFだけにする(正規化?)のは、raw文字列リテラルに限らない共通の処理なのでは。
766 名前:デフォルトの名無しさん mailto:sage [2025/11/18(火) 07:15:20.89 ID:cPKOUaFd0.net] 規格が決めてるのはソース中の論理的な「改行」の振る舞いであって、そのバイト表現は知ったこっちゃないって奴じゃないの 知らんけど
767 名前:はちみつ餃子 mailto:sage [2025/11/18(火) 10:05:52.54 ID:BySuHnsX0.net] >>766 従来はそうだったはずだけど C++23 からは Unicode (UTF-8) のコードポイントの並びで規定されていて、 CRLF が単一の改行に置き換えられる規則が明記されてる。 ただ、 Unicode 系以外の文字コードから処理系定義の規則で Unicode に適当にマッピングするようなのも認めているので実態はあまり変わらない。
768 名前:デフォルトの名無しさん [2025/11/18(火) 23:53:18.65 ID:+AochNn2a.net] >>764-765 termcapだかterminfoだかでゴニョゴニョ
769 名前:デフォルトの名無しさん mailto:sage [2025/11/19(水) 15:04:12.19 ID:HRoC/CWNM.net] >>768 関係ない