!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part164
https://mevius.5ch.net/test/read.cgi/tech/1683600652/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C++相談室 part165
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ efda-9b8G)
2023/10/31(火) 07:37:38.52ID:+ZyYyqMO0709デフォルトの名無しさん (ワッチョイ 59f0-PCPn)
2025/03/03(月) 01:53:36.51ID:t7PhNKj40710デフォルトの名無しさん (ワッチョイ 2ba2-KWHx)
2025/03/03(月) 09:52:35.09ID:ZrscZeKh0 >>708
結局ところ学習ソースはネットだからネットで情報の少ない分野がいい加減になるのはしゃーない
結局ところ学習ソースはネットだからネットで情報の少ない分野がいい加減になるのはしゃーない
711デフォルトの名無しさん (ブーイモ MMcb-fnNf)
2025/03/03(月) 10:09:12.99ID:11DxD7kOM712デフォルトの名無しさん (ワッチョイ 0901-Nguo)
2025/03/03(月) 10:23:10.28ID:Hx0aO5p40 自動小説製造機になに期待してんだか
713はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1132-rXBA)
2025/03/05(水) 18:11:47.24ID:+YosNdhq0 AI が人間の知能を模倣しようとする試みである以上は人間に似た限界もある。
何もかもの専門家であることは出来ない。
無料で使える ChatGPT はその性質上、汎用 AI として調整されてるし使えるリソースは少なめなのでこれで AI を判断しないほうがいいよ。
プログラミング専用に訓練した AI は本当に賢い。
何もかもの専門家であることは出来ない。
無料で使える ChatGPT はその性質上、汎用 AI として調整されてるし使えるリソースは少なめなのでこれで AI を判断しないほうがいいよ。
プログラミング専用に訓練した AI は本当に賢い。
714デフォルトの名無しさん (ワッチョイ 7956-s+rv)
2025/03/05(水) 18:48:09.02ID:LRhSWm980 プログラミング専用ってどゆこと?
715デフォルトの名無しさん (ワッチョイ 79d7-9m9g)
2025/03/05(水) 19:22:05.63ID:P80r5h460 Clineとかじゃね?しらんけど
716デフォルトの名無しさん (ワッチョイ 7956-s+rv)
2025/03/05(水) 19:41:16.61ID:LRhSWm980 プログラミングの専門家ってなに?という疑問
言語仕様や構文、標準ライブラリに詳しい人またはAIのことかな?
でもそれって特定ビジネスドメインの専門家ではないよね?
たとえば高度な会計処理のプログラミングをAIにしてもらうことって可能なのかな?
アプリケーションを完成させるにはプログラミングだけでなくビジネスドメインの知識も必要になると思うけど
言語仕様や構文、標準ライブラリに詳しい人またはAIのことかな?
でもそれって特定ビジネスドメインの専門家ではないよね?
たとえば高度な会計処理のプログラミングをAIにしてもらうことって可能なのかな?
アプリケーションを完成させるにはプログラミングだけでなくビジネスドメインの知識も必要になると思うけど
717デフォルトの名無しさん (ワッチョイ 7956-s+rv)
2025/03/05(水) 19:44:29.61ID:LRhSWm980 たとえば高位の税理士や会計士がプログラミング専門に訓練したAIに指示を出すことで会計ソフトを作ることはできるのだろうか?
718デフォルトの名無しさん (スッププ Sd33-F7vG)
2025/03/05(水) 19:45:37.93ID:7KFkamxVd AIについて語りたいならスレ違い。
719はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1132-rXBA)
2025/03/05(水) 19:51:32.43ID:+YosNdhq0 具体的な話はしないよ。
ChatGPT を試した程度で AI を評価すべきじゃないという主旨。
ChatGPT を試した程度で AI を評価すべきじゃないという主旨。
720デフォルトの名無しさん (ワッチョイ 7956-s+rv)
2025/03/05(水) 19:51:57.29ID:LRhSWm980 たとえば、はちみつ餃子さんはC++のこと詳しいけどどんなアプリでも作れるってわけじゃないよね?
医学とか専門性の高いものはその分野の知識も当然必要になってくると思うし
そうするとプログラミングの専門家AIってなんだ?
ほんとにプログラム作れるのか?という疑問が湧いてくる
医学とか専門性の高いものはその分野の知識も当然必要になってくると思うし
そうするとプログラミングの専門家AIってなんだ?
ほんとにプログラム作れるのか?という疑問が湧いてくる
721デフォルトの名無しさん (ワッチョイ fbef-qwdi)
2025/03/05(水) 23:39:44.64ID:+5QIrElo0 ハチミツさんはどんなプログラムでも作れるよ
時間さえあれば
時間さえあれば
722デフォルトの名無しさん (オイコラミネオ MMfd-4fLd)
2025/03/06(木) 00:09:24.53ID:r/i65GRXM ところで、「結局C++とRustってどっちが良いの?」でも質問したんだけど、
X(旧 twitter)で、C++ というキーワードが検索できないんだけど、
俺の環境だけなのか、一般的に他の人の環境でもそうなって
いるのかどっち?
X(旧 twitter)で、C++ というキーワードが検索できないんだけど、
俺の環境だけなのか、一般的に他の人の環境でもそうなって
いるのかどっち?
723デフォルトの名無しさん (ワッチョイ 0916-VeWP)
2025/03/06(木) 07:44:57.51ID:87cY651N0 unsigned intをkeyとするstd::mapである値以上ある値以下のkeyの要素を全て削除したいんだけどどうしたらいいかな?
725はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 692e-rXBA)
2025/03/06(木) 18:24:33.81ID:lbAGNheW0 >>722
記号を含むワードは検索できない。
投稿する側が配慮して #cpp や #cplusplus といったタグをつける習慣はあるけどそれほど浸透してないので網羅的に探す方法はないと思う。
普通のワードでも検索はなんかおかしいし。
おすすめが賢いようなのでフォローやお気に入りを積極的にしていくと快適に情報を集められるかもしれない。
昔はおすすめ機能に「いらんことするな」という意見が多かったけど思ったより良くできてるね。
記号を含むワードは検索できない。
投稿する側が配慮して #cpp や #cplusplus といったタグをつける習慣はあるけどそれほど浸透してないので網羅的に探す方法はないと思う。
普通のワードでも検索はなんかおかしいし。
おすすめが賢いようなのでフォローやお気に入りを積極的にしていくと快適に情報を集められるかもしれない。
昔はおすすめ機能に「いらんことするな」という意見が多かったけど思ったより良くできてるね。
726デフォルトの名無しさん (ワッチョイ 117c-9dXb)
2025/03/06(木) 19:34:30.93ID:e0LjRkKt0 最近Rustに押されてるのは検索性の悪さと無関係じゃないと思う
727はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1132-rXBA)
2025/03/06(木) 19:58:40.82ID:jh2IMGBN0 Go とか BASIC とか Scheme なんかも日常的な語彙すぎて検索性は悪いが、検索自体が出来ないってことはないから組み合わせるワード次第でなんとかなるもんな。
日本語の文章という制約を入れればそれなりに絞れるし。
日本語の文章という制約を入れればそれなりに絞れるし。
728青木康善 (ワッチョイ 694e-rQ/Z)
2025/03/07(金) 14:22:29.06ID:ANm5ssXN0 皆さん、アドバイス大感謝します。しかし、Javaはある程度分かるんですが、C++はなかなか手古摺ります。
729デフォルトの名無しさん (アウアウウー Sa1d-8P30)
2025/03/07(金) 14:57:48.23ID:xU3go4h6a そもそもtwitterを検索に使おうって言う発想が貧困アタオカ
730デフォルトの名無しさん (ワッチョイ c907-CnOn)
2025/03/07(金) 19:27:12.87ID:AEV18jyF0 通常のwebより、SNSのほうが新鮮でおいしいって若者は思ったりするらしいんだが
それなら5chもいいぞ、名無しでいけるだけあって、愚問こいちゃっても後腐れは少ない
それなら5chもいいぞ、名無しでいけるだけあって、愚問こいちゃっても後腐れは少ない
731デフォルトの名無しさん (ワッチョイ 2bc3-Ggml)
2025/03/07(金) 20:36:20.40ID:49H/kgbx0 >>729
そうやって解決策を示さずに初心者を排除していると老害と言われるよ。
そうやって解決策を示さずに初心者を排除していると老害と言われるよ。
732デフォルトの名無しさん (ワッチョイ 1302-aRqM)
2025/03/08(土) 14:23:59.19ID:UEd3TNkS0 自分が初心者だった頃を思い出せば
新参者に優しくなれるだろ?
新参者に優しくなれるだろ?
733デフォルトの名無しさん (ワッチョイ d6ab-ctMQ)
2025/03/09(日) 20:55:57.38ID:kn1fZdL+0 初心者だった頃は、好き放題にぶっ叩かれてたな
同じようにするまいとは思うものの、他人を制止するのは(ry
同じようにするまいとは思うものの、他人を制止するのは(ry
734デフォルトの名無しさん (アウアウウー Sa89-u0Z4)
2025/03/09(日) 21:48:59.36ID:ce6tc1GUa 初心者だったころはそもそもSNSもインターネッツもなくパソコン通信の黎明期で
周囲には俺以外C言語でプログラムしようという人間もいなかったから気楽だった
周囲には俺以外C言語でプログラムしようという人間もいなかったから気楽だった
735デフォルトの名無しさん (ササクッテロル Sp85-ZS5M)
2025/03/13(木) 18:20:47.77ID:0zFelsYRp 十年くらいC++触ってなくて、最近また触る機会があったんだが
なんだこの[]()ってのは…ラムダ式なんて初めて見たよ
なんだこの[]()ってのは…ラムダ式なんて初めて見たよ
736デフォルトの名無しさん (ワッチョイ 3d07-ctMQ)
2025/03/13(木) 19:23:59.55ID:UZM60pXP0 そういう古参さんは、頭に+つけるってのを聞くとちょっと喜ぶと思うw
738デフォルトの名無しさん (ワッチョイ c17c-aZJm)
2025/03/14(金) 07:38:33.30ID:iWVzvedA0 すっぽすっぽ先生がC
739デフォルトの名無しさん (ワッチョイ c17c-aZJm)
2025/03/14(金) 07:40:07.31ID:iWVzvedA0 すっぽすっぽ先生がC with Classesを作ってから最初の規格C++98まで19年
C++98からC++11まで13年
そしてC++11から今14年
C++98からC++11まで13年
そしてC++11から今14年
740デフォルトの名無しさん (ササクッテロル Sp85-ZS5M)
2025/03/14(金) 10:03:43.97ID:uQBcUqUtp 十年くらい前に最新の書式を導入する情報もリスクを被る勇気も無いわな
741デフォルトの名無しさん (ワッチョイ dd01-5p3Z)
2025/03/14(金) 10:23:25.48ID:PsWnmiZn0 >>736
なんスカそれ?
なんスカそれ?
742はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c132-ctMQ)
2025/03/14(金) 11:05:51.17ID:B4ilMY360 >>741
ラムダ式の前に + を付けると関数ポインタに型変換できるという小ネタの話だと思う。
ラムダ式の前に + を付けると関数ポインタに型変換できるという小ネタの話だと思う。
743デフォルトの名無しさん (アウアウウー Sa89-Cjjx)
2025/03/14(金) 15:50:51.90ID:43evLOjOa キャプチャ付lambdaでさらに脳汁
744デフォルトの名無しさん (ササクッテロル Sp85-ZS5M)
2025/03/14(金) 17:15:25.44ID:flvbk/67p 迷走してますなぁw
745デフォルトの名無しさん (ワッチョイ dd01-5p3Z)
2025/03/14(金) 21:47:11.78ID:PsWnmiZn0 >>742
初めて知った
初めて知った
746はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c132-ctMQ)
2025/03/15(土) 09:10:45.56ID:tr5ODwiQ0 >>745
実際にはラムダ式 (クロージャ型) に対しての特別な機能があるわけじゃなくて、単項 + にクロージャオブジェクトを渡そうとするとオーバーロード解決ルールの途中で適用可能な暗黙の変換が適用された結果としてそうなる
実際にはラムダ式 (クロージャ型) に対しての特別な機能があるわけじゃなくて、単項 + にクロージャオブジェクトを渡そうとするとオーバーロード解決ルールの途中で適用可能な暗黙の変換が適用された結果としてそうなる
747デフォルトの名無しさん (スフッ Sd9a-JU6R)
2025/03/15(土) 17:45:50.20ID:UQwxamXid [](){}();
748デフォルトの名無しさん (ワッチョイ 1963-BNp6)
2025/03/15(土) 22:57:27.79ID:nPJTLBuF0 停止性問題を一般のケースについて解く機械的手続きで有限時間で必ずおわるもの(アルゴリズム)は存在しないが
人間は納期までにプログラムえおデバッグできる……できる……たぶん……
人間は納期までにプログラムえおデバッグできる……できる……たぶん……
749はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI)
2025/03/16(日) 09:48:31.74ID:B4wnHsDg0 出来なかったら誰かがどういう形かで責任を取る。
それが社会ってもんだ。
それが社会ってもんだ。
750デフォルトの名無しさん (ワッチョイ d963-lHAu)
2025/03/16(日) 11:01:20.74ID:N4spayNe0 有限時間内に終わる機械的計算手続きとして存在するかという観点で考えたとき
デバックの不可能なプログラムは存在しないという例の命題は偽な可能性、
もっともこの正確な引用は「バグのないプログラムは存在しないがデバックの不可能なプログラムもまた存在しない」であって全体として矛盾した主張であることは前から指摘されてあるが
デバックの不可能なプログラムは存在しないという例の命題は偽な可能性、
もっともこの正確な引用は「バグのないプログラムは存在しないがデバックの不可能なプログラムもまた存在しない」であって全体として矛盾した主張であることは前から指摘されてあるが
751デフォルトの名無しさん (ワッチョイ d963-lHAu)
2025/03/16(日) 11:04:22.68ID:N4spayNe0 訂正orz、
誤: 有限時間内に終わる機械的計算手続きとして存在するかという観点で考えたとき
正: 任意のプログラムのデバッグと言う手続きが有限時間内に終わる機械的計算手続きとして存在するかという観点で考えたとき
誤: 有限時間内に終わる機械的計算手続きとして存在するかという観点で考えたとき
正: 任意のプログラムのデバッグと言う手続きが有限時間内に終わる機械的計算手続きとして存在するかという観点で考えたとき
752デフォルトの名無しさん (ワッチョイ 1302-BOwI)
2025/03/17(月) 06:41:01.39ID:/+A5sOUu0 ラムダ式に+の話は始めて知った
勉強になった
勉強になった
753デフォルトの名無しさん (オッペケ Sr9d-exlI)
2025/03/17(月) 09:17:27.77ID:3/T8wXeSr >>746
それちょっとだけ解説きぼん ぶっちゃけなんとなくで使ってて気持ち悪かった
それちょっとだけ解説きぼん ぶっちゃけなんとなくで使ってて気持ち悪かった
754はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI)
2025/03/17(月) 09:55:35.41ID:xz+hBXXy0 オーバーロード解決のルールは大雑把には
・候補の中で実引数と完璧に型が一致するものがあればそれが選ばれる。
・完璧な一致がないが暗黙の型変換を適用したら一致するという候補があればそれが選ばれる。
ということになってる。
実際には変換の中にも優先順位がごちゃごちゃあってかなり複雑なんだけど……。
で、組み込みの単項 + が受け取りうる型は何かというと算術型、スコープなし列挙型、またはポインタ型の三つ。
https://timsong-cpp.github.io/cppwp/n3337/expr.unary#op-7
キャプチャなしのクロージャ型は関数ポインタへの変換関数を持っている。 つまり暗黙の型変換が可能。
https://timsong-cpp.github.io/cppwp/n3337/expr.prim.lambda#6
クロージャからポインタへ暗黙の型変換をすれば単項 + に一致するからそれが選ばれる。
そういうメカニズムだと私は理解してるんだけど間違いがあったら誰か指摘してね。
・候補の中で実引数と完璧に型が一致するものがあればそれが選ばれる。
・完璧な一致がないが暗黙の型変換を適用したら一致するという候補があればそれが選ばれる。
ということになってる。
実際には変換の中にも優先順位がごちゃごちゃあってかなり複雑なんだけど……。
で、組み込みの単項 + が受け取りうる型は何かというと算術型、スコープなし列挙型、またはポインタ型の三つ。
https://timsong-cpp.github.io/cppwp/n3337/expr.unary#op-7
キャプチャなしのクロージャ型は関数ポインタへの変換関数を持っている。 つまり暗黙の型変換が可能。
https://timsong-cpp.github.io/cppwp/n3337/expr.prim.lambda#6
クロージャからポインタへ暗黙の型変換をすれば単項 + に一致するからそれが選ばれる。
そういうメカニズムだと私は理解してるんだけど間違いがあったら誰か指摘してね。
755はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI)
2025/03/17(月) 09:58:44.63ID:xz+hBXXy0 単項 + の話題がウケたみたいなのでオマケで * の話もしようかな。
単項 * にクロージャを渡した場合は関数の参照になる。
つまり *[](){} としたら型は void(&)() ってことね。
式中に参照が現れたら参照が指す先の型に変換されて、関数指示子が現れたら関数ポインタに変換されるので多くの状況では最終的に関数ポインタになっちゃうんだけど。
単項 * にクロージャを渡した場合は関数の参照になる。
つまり *[](){} としたら型は void(&)() ってことね。
式中に参照が現れたら参照が指す先の型に変換されて、関数指示子が現れたら関数ポインタに変換されるので多くの状況では最終的に関数ポインタになっちゃうんだけど。
756デフォルトの名無しさん (ササクッテロル Sp9d-H5Hv)
2025/03/17(月) 10:46:49.46ID:qCQLpZeYp 要するに副作用って事か
環境によってとかオプティマイズ如何で違った動きになる事は無いのかなぁ
環境によってとかオプティマイズ如何で違った動きになる事は無いのかなぁ
757デフォルトの名無しさん (ブーイモ MM33-EPiB)
2025/03/17(月) 11:12:41.81ID:ly7jZf+WM ならんだろw
758デフォルトの名無しさん (ササクッテロル Sp9d-H5Hv)
2025/03/17(月) 11:24:02.10ID:F8F0vPkQp 昔、ARM系の環境で配列とポインタがまるっきり違う扱いになって困ったって事があったんだよなぁ
759はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI)
2025/03/17(月) 11:44:46.70ID:xz+hBXXy0 >>756
これは言語仕様の話なので言語仕様に沿わないことがあるなら単にコンパイラのバグってだけだ。
これは言語仕様の話なので言語仕様に沿わないことがあるなら単にコンパイラのバグってだけだ。
760デフォルトの名無しさん (スップ Sd33-pKjK)
2025/03/17(月) 13:02:56.94ID:kJ3GyyA+d 「関数の配列」なんてものが存在しないC++で、関数ポインタに合法的な加減算することなんてないはずなのに、その仲間である単項+が効いちゃうのは気持ち悪くはある
761デフォルトの名無しさん (ワッチョイ 711b-yxlS)
2025/03/17(月) 13:42:24.96ID:EbB+xfjB0 関数ポインタをインクリメントしたら次の関数になるとかだったら便利よね
762デフォルトの名無しさん (ブーイモ MM33-EPiB)
2025/03/17(月) 13:56:11.11ID:ly7jZf+WM 次ってどこだよ
763デフォルトの名無しさん (ワッチョイ 711b-yxlS)
2025/03/17(月) 14:43:44.88ID:EbB+xfjB0 関数のアドレス順とか
764デフォルトの名無しさん (ササクッテロル Sp9d-H5Hv)
2025/03/17(月) 15:28:39.42ID:nF5lR4//p コード書いた順だろw
765はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 217f-a7BF)
2025/03/17(月) 16:50:25.99ID:qL9fWs880 >>760
私もそう思う。
いつからこうなのか探ってみたら1984年のリファレンスマニュアルではそもそも単項 + は存在せず、
https://web.archive.org/web/20171002220954/http://www.eah-jena.de/~kleine/history/languages/Stroustrup-CplusplusReferenceManual.pdf
1989年には単項 + が現れていてポインタも受け取れるようになってる。
https://www.softwarepreservation.org/projects/c_plus_plus/cfront/release_2.0/doc/ProductReferenceManual.pdf
この間にどんな議論があったのかよくわからん。
C の規格では今でも単項 + は算術型しか許してないし、それが自然だよな。
私もそう思う。
いつからこうなのか探ってみたら1984年のリファレンスマニュアルではそもそも単項 + は存在せず、
https://web.archive.org/web/20171002220954/http://www.eah-jena.de/~kleine/history/languages/Stroustrup-CplusplusReferenceManual.pdf
1989年には単項 + が現れていてポインタも受け取れるようになってる。
https://www.softwarepreservation.org/projects/c_plus_plus/cfront/release_2.0/doc/ProductReferenceManual.pdf
この間にどんな議論があったのかよくわからん。
C の規格では今でも単項 + は算術型しか許してないし、それが自然だよな。
766デフォルトの名無しさん (アウアウエー Sa23-D2PX)
2025/03/18(火) 18:06:10.72ID:2EW8BzNca >>760-762
各要素のサイズが一定じゃないから無理なんやろな
各要素のサイズが一定じゃないから無理なんやろな
767デフォルトの名無しさん (ワッチョイ 1302-BOwI)
2025/03/21(金) 19:45:52.92ID:zuSmXANM0768デフォルトの名無しさん (ワッチョイ 1302-BOwI)
2025/03/21(金) 19:49:46.16ID:zuSmXANM0 関数のアドレスなら呼び出して
スタックに無理矢理アク(以下略)
スタックに無理矢理アク(以下略)
769デフォルトの名無しさん (ワッチョイ 0107-exlI)
2025/03/21(金) 22:32:50.41ID:pLF+KLC30 そういうむちゃくちゃが簡単にできるのがC/C++
そんなことしながら、チップを覚えるんだよなあ
自分、次はMIPS覚えないと
そんなことしながら、チップを覚えるんだよなあ
自分、次はMIPS覚えないと
770デフォルトの名無しさん (アウアウエー Sa23-D2PX)
2025/03/22(土) 14:21:53.59ID:U6/Lg1xxa どっかのタイミングでbpがスタックギリギリ飛ばすんじゃなくて
コンパイラが128bytesくらい飛ばす仕様になった気がするんだけど
あれは0埋めで(ホントはバグがあるのに)奇跡的にバグ回避するテクニックなのか
他に理由あるんか
コンパイラが128bytesくらい飛ばす仕様になった気がするんだけど
あれは0埋めで(ホントはバグがあるのに)奇跡的にバグ回避するテクニックなのか
他に理由あるんか
771はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-a7BF)
2025/03/22(土) 18:01:17.10ID:nNEN9uWE0772デフォルトの名無しさん (ワッチョイ d963-lHAu)
2025/03/22(土) 20:51:53.87ID:kbZO019Z0 質問なのですがstd::unique_ptr<T>とかstd::shared_ptr<T>みたいなSTLで定義済みの
テンプレートクラスをfriendにすることは合法?
用途はシングルトンパティーンのオブジェクトのプログラム終了時の自動解放
テンプレートクラスをfriendにすることは合法?
用途はシングルトンパティーンのオブジェクトのプログラム終了時の自動解放
773はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI)
2025/03/22(土) 21:29:46.22ID:nNEN9uWE0 >>772
T のデストラクタが private なのを std::unique_ptr<T> からのアクセスは許すってこと?
特に問題ないよ。
ところでテンプレートクラスじゃなくてクラステンプレートな!
T のデストラクタが private なのを std::unique_ptr<T> からのアクセスは許すってこと?
特に問題ないよ。
ところでテンプレートクラスじゃなくてクラステンプレートな!
774デフォルトの名無しさん (ワッチョイ d963-lHAu)
2025/03/22(土) 22:33:09.97ID:kbZO019Z0 >>773
㌧クス、
>T のデストラクタが private なのを std::unique_ptr<T> からのアクセスは許すってこと?
>特に問題ないよ。
それがTのコンストラクタがprivateなパティーンなのです!
friendにしないとビルドが通らないかった(VS2022、VS2015)。
多分moveとかの最にstd::unique_ptr<T>がTのコンストラクタにアクセスするのだと思う。
㌧クス、
>T のデストラクタが private なのを std::unique_ptr<T> からのアクセスは許すってこと?
>特に問題ないよ。
それがTのコンストラクタがprivateなパティーンなのです!
friendにしないとビルドが通らないかった(VS2022、VS2015)。
多分moveとかの最にstd::unique_ptr<T>がTのコンストラクタにアクセスするのだと思う。
775デフォルトの名無しさん (ワッチョイ d963-lHAu)
2025/03/22(土) 22:39:33.53ID:kbZO019Z0 >ところでテンプレートクラスじゃなくてクラステンプレートな!
なるほど……orz
コード例:
class Foo {
friend std::unique_ptr<Foo>;
static std::unique_ptr<Foo> m_pObj;
private:
static Foo* createInstance() {
if (m_pObj == NULL) { m_pObj = std::unique_ptr<Foo>(new Foo()); } return m_pObj.get()j;
// ↑ std::make_unique<Foo>()したらビルドエラー(使うには多分std::make_unique<Foo>()もfriendが要る
// スレッドセーフ化は省略
}
// ...
};
なるほど……orz
コード例:
class Foo {
friend std::unique_ptr<Foo>;
static std::unique_ptr<Foo> m_pObj;
private:
static Foo* createInstance() {
if (m_pObj == NULL) { m_pObj = std::unique_ptr<Foo>(new Foo()); } return m_pObj.get()j;
// ↑ std::make_unique<Foo>()したらビルドエラー(使うには多分std::make_unique<Foo>()もfriendが要る
// スレッドセーフ化は省略
}
// ...
};
776はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI)
2025/03/22(土) 23:40:24.86ID:nNEN9uWE0 >>775
new Foo() を Foo のメンバ関数の中でやる分には自分自身の中でやることなので friend 宣言は不要。
std::make_unique<Foo>() をすると std::make_unique の中で Foo のコンストラクタを呼ぼうとするから std::make_unique<Foo> をフレンド宣言する必要がある。
new Foo() を Foo のメンバ関数の中でやる分には自分自身の中でやることなので friend 宣言は不要。
std::make_unique<Foo>() をすると std::make_unique の中で Foo のコンストラクタを呼ぼうとするから std::make_unique<Foo> をフレンド宣言する必要がある。
777デフォルトの名無しさん (ワッチョイ d963-lHAu)
2025/03/22(土) 23:48:30.44ID:kbZO019Z0778はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-PAPZ)
2025/03/23(日) 00:18:05.56ID:Ft35v0Bz0 >>777
私は Visual Stuio 2022 (MSVC 17) にコンパイルさせてエラーが出ないことを確認した上で書いてる。
手元に Visual Studio を入れていないのでオンラインコンパイラだけど。
コードを呼び出す側なども補うとたぶんこんなのだよね? 私が問題の理解を間違えている箇所はある?
#include <memory>
class Foo {
private:
static std::unique_ptr<Foo> m_pObj;
Foo(void) = default; // デフォルトコンストラクタはプライベート
public:
static Foo* createInstance() {
if (m_pObj == NULL) {
m_pObj = std::unique_ptr<Foo>(new Foo);
}
return m_pObj.get();
}
};
std::unique_ptr<Foo> Foo::m_pObj;
int main(void) {
auto bar = Foo::createInstance();
}
私は Visual Stuio 2022 (MSVC 17) にコンパイルさせてエラーが出ないことを確認した上で書いてる。
手元に Visual Studio を入れていないのでオンラインコンパイラだけど。
コードを呼び出す側なども補うとたぶんこんなのだよね? 私が問題の理解を間違えている箇所はある?
#include <memory>
class Foo {
private:
static std::unique_ptr<Foo> m_pObj;
Foo(void) = default; // デフォルトコンストラクタはプライベート
public:
static Foo* createInstance() {
if (m_pObj == NULL) {
m_pObj = std::unique_ptr<Foo>(new Foo);
}
return m_pObj.get();
}
};
std::unique_ptr<Foo> Foo::m_pObj;
int main(void) {
auto bar = Foo::createInstance();
}
779デフォルトの名無しさん (ワッチョイ ed7c-etgo)
2025/03/23(日) 00:19:16.26ID:YXTjT4M+0780デフォルトの名無しさん (ワッチョイ ed7c-etgo)
2025/03/23(日) 00:20:25.80ID:YXTjT4M+0 あ、被った
内容は一緒
内容は一緒
781デフォルトの名無しさん (ワッチョイ 9901-Awih)
2025/03/23(日) 00:21:43.38ID:/EbbY7QB0782デフォルトの名無しさん (ワッチョイ e563-0why)
2025/03/23(日) 01:58:28.60ID:IgihfQRv0 >>778>>779
お騒がせしましたサーセン;;;orz ビルドが通らないというのは私めの勘違いだった模様。
コードはそれで良いです。
そのコード(最小サンプル)、および最小サンプルにする前のコード×VS2015でもfriend宣言部分をコメントアウトしてビルドが通った 。n_
フレンド宣言friend std::unique_ptr<Foo>; を付けるに至った履歴が無いので推測ですだが
デストラクタがprivateのままだったタイミングがあったのかも……
(m_pObjが生ポインタのタイプのSingletonはデストラクタがprivateでもビルドが通る(デストラクタを呼ぶ人が居ないため)
→この状態でm_pObjをstd::unique_ptr<Foo>に変更してビルドエラー、アクセス許可が無いとコンパイラに言われて慌ててfriend追加、だった可能性、
お騒がせしましたサーセン;;;orz ビルドが通らないというのは私めの勘違いだった模様。
コードはそれで良いです。
そのコード(最小サンプル)、および最小サンプルにする前のコード×VS2015でもfriend宣言部分をコメントアウトしてビルドが通った 。n_
フレンド宣言friend std::unique_ptr<Foo>; を付けるに至った履歴が無いので推測ですだが
デストラクタがprivateのままだったタイミングがあったのかも……
(m_pObjが生ポインタのタイプのSingletonはデストラクタがprivateでもビルドが通る(デストラクタを呼ぶ人が居ないため)
→この状態でm_pObjをstd::unique_ptr<Foo>に変更してビルドエラー、アクセス許可が無いとコンパイラに言われて慌ててfriend追加、だった可能性、
783デフォルトの名無しさん (ワッチョイ 622d-hk3H)
2025/03/23(日) 09:31:51.75ID:CXYOr+7B0 繰り返しになるが熟読した方がいいぞ
無視していいメッセージかそうでないかも区別できるようになるから
無視していいメッセージかそうでないかも区別できるようになるから
784はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-PAPZ)
2025/03/23(日) 09:32:31.18ID:Ft35v0Bz0 元の話題からはずれる余談だけれど、静的記憶域期間を持つブロックスコープの変数は最初に通過したときに初期化されるルールがある。 (条件によるので常にではない。)
https://timsong-cpp.github.io/cppwp/n3337/stmt.dcl#4
なのでシングルトンパターンはこう単純化して書くことも出来る。
#include <memory>
class Foo {
Foo() = default;
public:
static Foo* createInstance() {
static std::unique_ptr<Foo> m_pObj = std::unique_ptr<Foo>(new Foo);
return m_pObj.get();
}
};
int main(void) {
auto bar = Foo::createInstance();
}
https://timsong-cpp.github.io/cppwp/n3337/stmt.dcl#4
なのでシングルトンパターンはこう単純化して書くことも出来る。
#include <memory>
class Foo {
Foo() = default;
public:
static Foo* createInstance() {
static std::unique_ptr<Foo> m_pObj = std::unique_ptr<Foo>(new Foo);
return m_pObj.get();
}
};
int main(void) {
auto bar = Foo::createInstance();
}
785デフォルトの名無しさん (ブーイモ MM19-xG3a)
2025/03/23(日) 10:12:01.75ID:i5B9IukZM それunique_ptrにする意味ある?
shared_ptrなら意味わかるけど
shared_ptrなら意味わかるけど
787デフォルトの名無しさん (ワッチョイ e563-0why)
2025/03/23(日) 10:56:08.84ID:IgihfQRv0 >>784
サンプルコードでは省略したけんども、Double-checked lockingの実験をしたかったノデス!
■ Double-Checked Locking is Fixed In C++11
https://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/
つなみに関数内staticオブジェクト初期化(初回実行時)のスレッド安全性がどうーなっているのかは
よく知りま栓(よって採用には消極的
>>785
Singletonなので誰からもshareされないし……
この場合むしろshared_ptrの方が牛刀な可能性もあるし……
なぜなら、std::shared_ptrの参照カウンタはその利用特性上
異なるスレッドから非同期にインクリメント/デクリメントされることを想定せざるおえず、
スレッド安全性担保がそこそこ重い同期オブジェクトで一方unique_ptrの所有権移動は非同期に行われることはなさげ
サンプルコードでは省略したけんども、Double-checked lockingの実験をしたかったノデス!
■ Double-Checked Locking is Fixed In C++11
https://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/
つなみに関数内staticオブジェクト初期化(初回実行時)のスレッド安全性がどうーなっているのかは
よく知りま栓(よって採用には消極的
>>785
Singletonなので誰からもshareされないし……
この場合むしろshared_ptrの方が牛刀な可能性もあるし……
なぜなら、std::shared_ptrの参照カウンタはその利用特性上
異なるスレッドから非同期にインクリメント/デクリメントされることを想定せざるおえず、
スレッド安全性担保がそこそこ重い同期オブジェクトで一方unique_ptrの所有権移動は非同期に行われることはなさげ
788デフォルトの名無しさん (ワッチョイ e563-0why)
2025/03/23(日) 10:57:59.97ID:IgihfQRv0 すまんこTeamsのノリで途中送信すたorz
誤: スレッド安全性担保がそこそこ重い同期オブジェクトで一方unique_ptrの所有権移動は非同期に行われることはなさげ
正: スレッド安全性担保がそこそこ重い同期オブジェクトで行われている危険性がある。一方unique_ptrの所有権移動は非同期に行われることはなさげなので多分軽量
誤: スレッド安全性担保がそこそこ重い同期オブジェクトで一方unique_ptrの所有権移動は非同期に行われることはなさげ
正: スレッド安全性担保がそこそこ重い同期オブジェクトで行われている危険性がある。一方unique_ptrの所有権移動は非同期に行われることはなさげなので多分軽量
789デフォルトの名無しさん (ワッチョイ e563-0why)
2025/03/23(日) 11:03:44.18ID:IgihfQRv0 だいたいstd::unique_ptrとstd::shard_ptrでは前者が1個のポインタと同じサイズなのに後者は2個分ある(ヒープにとられた参照カウンタへのポインタを持つため
sizeof(shared_ptr)=16
sizeof(unique_ptr)=8
というのもあり、std::unique_ptr<T>で済むところをstd::shared_ptr<T>推しするのはいかがなものか……
sizeof(shared_ptr)=16
sizeof(unique_ptr)=8
というのもあり、std::unique_ptr<T>で済むところをstd::shared_ptr<T>推しするのはいかがなものか……
790デフォルトの名無しさん (ワッチョイ 0653-xG3a)
2025/03/23(日) 21:04:30.15ID:k0m2+uGk0 >>789
shared_ptrを使えと言ってるのでなくunique_ptrの意味が特にないと言ってる
別に使ってもいいけどお前それをわかってんの?ってこと?
ついでに言っておけばshared_ptrを使う場合ってのは参照カウントがゼロになったらシングルトンを破棄するみたいな凝った実装する場合に使う
shared_ptrを使えと言ってるのでなくunique_ptrの意味が特にないと言ってる
別に使ってもいいけどお前それをわかってんの?ってこと?
ついでに言っておけばshared_ptrを使う場合ってのは参照カウントがゼロになったらシングルトンを破棄するみたいな凝った実装する場合に使う
791デフォルトの名無しさん (ワッチョイ ed7c-etgo)
2025/03/24(月) 00:16:57.44ID:zeyD/Mo00 unique_ptrじゃなくてナマポ使えって言ってんの?どこでdeleteする気なの?
792デフォルトの名無しさん (ワッチョイ 0653-xG3a)
2025/03/24(月) 00:22:30.84ID:wvKmLjta0793デフォルトの名無しさん (ワッチョイ ed7c-etgo)
2025/03/24(月) 07:56:52.11ID:zeyD/Mo00 えぇ・・・?
794デフォルトの名無しさん (ワッチョイ 65e7-aE+1)
2025/03/24(月) 08:43:05.04ID:s0JFvm8m0795デフォルトの名無しさん (ワッチョイ 65e7-aE+1)
2025/03/24(月) 08:50:28.31ID:s0JFvm8m0796デフォルトの名無しさん (ブーイモ MM62-xG3a)
2025/03/24(月) 09:19:49.44ID:8nOZWVbeM >>795
もし解決されてないならunique_ptrでも問題出るでしょ
もし解決されてないならunique_ptrでも問題出るでしょ
797デフォルトの名無しさん (ワッチョイ 4602-BGJw)
2025/03/24(月) 23:17:27.23ID:C5SHS/Z30 Makefileについて教えてください。
ベースディレクトリにMakefileがあり、サブディレクトリは以下の構造としたいです
・src\内にhello.c func1.c func2.cが、include\内にfuncs.hがある
・*.oはobj\内に作る
・最終成果物は.\sample.exeとして作る
ソースファイル、ヘッダファイルの増減時にSRCS、INCSを修正すれば済むようにと、
以下のようなMakefileを作っているのですが、makeすると
*** No rule to make target 'obj/hello.o', needed by 'c_sample.exe'. Stop.
となってしまいます
ソースはsrc、オブジェクトはobjディレクトリとしている場合のサフィックスルールが正しくないので
src/hello.cからobj/hello.oを作るルールを表現できていない、と個人的に思っているのですが、
どのようにすれば動作するか教えてください
SRCDIR = ./src
OBJDIR = ./obj
INCDIR = ./include
SRCS = hello.c funcs1.c funcs2.c
OBJS = $(SRCS:%.c=%.o)
INCS = funcs.h
PROGRAM = c_sample.exe
CC = gcc
CFLAGS+= -g -Wall -I$(INCDIR)
.SUFFIXES: .c .o
all: $(PROGRAM)
$(PROGRAM): $(OBJDIR)/$(OBJS) $(INCDIR)/$(INCS)
$(CC) $(CFLAGS) -o $(PROGRAM) $^
.c.o:
$(CC) $(CFLAGS) -c $(SRCDIR)/$<
ベースディレクトリにMakefileがあり、サブディレクトリは以下の構造としたいです
・src\内にhello.c func1.c func2.cが、include\内にfuncs.hがある
・*.oはobj\内に作る
・最終成果物は.\sample.exeとして作る
ソースファイル、ヘッダファイルの増減時にSRCS、INCSを修正すれば済むようにと、
以下のようなMakefileを作っているのですが、makeすると
*** No rule to make target 'obj/hello.o', needed by 'c_sample.exe'. Stop.
となってしまいます
ソースはsrc、オブジェクトはobjディレクトリとしている場合のサフィックスルールが正しくないので
src/hello.cからobj/hello.oを作るルールを表現できていない、と個人的に思っているのですが、
どのようにすれば動作するか教えてください
SRCDIR = ./src
OBJDIR = ./obj
INCDIR = ./include
SRCS = hello.c funcs1.c funcs2.c
OBJS = $(SRCS:%.c=%.o)
INCS = funcs.h
PROGRAM = c_sample.exe
CC = gcc
CFLAGS+= -g -Wall -I$(INCDIR)
.SUFFIXES: .c .o
all: $(PROGRAM)
$(PROGRAM): $(OBJDIR)/$(OBJS) $(INCDIR)/$(INCS)
$(CC) $(CFLAGS) -o $(PROGRAM) $^
.c.o:
$(CC) $(CFLAGS) -c $(SRCDIR)/$<
798797 (ワッチョイ 4602-BGJw)
2025/03/24(月) 23:24:39.28ID:C5SHS/Z30 すいません、タブが崩れました
下の方ですが、全角スペースで記載してますが
$(PROGRAM): $(OBJDIR)/$(OBJS) $(INCDIR)/$(INCS)
$(CC) $(CFLAGS) -o $(PROGRAM) $^
.c.o:
$(CC) $(CFLAGS) -c $(SRCDIR)/$<
こうです
申し訳ありませんでした
下の方ですが、全角スペースで記載してますが
$(PROGRAM): $(OBJDIR)/$(OBJS) $(INCDIR)/$(INCS)
$(CC) $(CFLAGS) -o $(PROGRAM) $^
.c.o:
$(CC) $(CFLAGS) -c $(SRCDIR)/$<
こうです
申し訳ありませんでした
799Fish (ワッチョイ 652f-MaZR)
2025/03/25(火) 02:35:59.65ID:3npSY7mr0 OpenCVについての質問です。VS2022を使用し、includeやopencv_world4100d.libの設定が終わり、検証のためにMatを宣言してimread、imshowのみを書いて検証しようとしたのですが、dllの設定がうまくいってなかったのかコンソールにdllのloadがfailedと大量に出力されます。OpenCVの入れ方を教えてほしいです…まだC++初心者で5チャンの投稿も初心者なので何か変だったらすみません…
800デフォルトの名無しさん (アウアウウー Saa5-WcQO)
2025/03/25(火) 04:37:37.58ID:ztarSHRBa801デフォルトの名無しさん (ワッチョイ 9901-Awih)
2025/03/25(火) 12:24:02.95ID:sbXkgTme0 >>799
exeと同じディレクトリにloadがfailedと言われるdll置いてみたら?
exeと同じディレクトリにloadがfailedと言われるdll置いてみたら?
802デフォルトの名無しさん (ワッチョイ 6e6c-JaxA)
2025/03/26(水) 11:17:13.88ID:ZFGsgZnF0 Makefileを作る時の$<と$?と$^の使い分けを教えて下さい
特に$<が何のためにあるのか分かりません。これだと2番目以降の材料が無視されてしまって動かない場合があるんじゃないかと心配になります。あと、makeは常に新しい材料のみコンパイルするという事は、すべてのケースで$?で良いのではと思ってしまいます。超初歩的な質問だと思いますがよろしくお願いします
特に$<が何のためにあるのか分かりません。これだと2番目以降の材料が無視されてしまって動かない場合があるんじゃないかと心配になります。あと、makeは常に新しい材料のみコンパイルするという事は、すべてのケースで$?で良いのではと思ってしまいます。超初歩的な質問だと思いますがよろしくお願いします
803デフォルトの名無しさん (ワッチョイ 6518-hacg)
2025/03/26(水) 13:48:44.59ID:GrIMF1MA0 C言語だとオブジェクトファイルの依存ファイルは,cファイルとそのcファイルが使うhファイルだけどコンパイルするのはあくまでcファイルだけ
だから依存関係の1つ目にcファイルを,2個目以降にhファイルを書いておけば$<でコンパイルできる
とかかな
だから依存関係の1つ目にcファイルを,2個目以降にhファイルを書いておけば$<でコンパイルできる
とかかな
804デフォルトの名無しさん (アウアウウー Saa5-WcQO)
2025/03/26(水) 15:00:53.93ID:NpEBbPpga805デフォルトの名無しさん (ワッチョイ 6232-bZOK)
2025/03/26(水) 15:48:44.68ID:OM1iPrvu0 >>797
基本的にサフィックスルールは何十年も前からobsolete扱いなのでやめた方が良い
基本的にサフィックスルールは何十年も前からobsolete扱いなのでやめた方が良い
806はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 09fa-p0tU)
2025/03/26(水) 20:50:04.73ID:cSMtN3B/0 ところでこの場合の makefile の話は GNU Make を前提にするということでええんか?
807797 (ワッチョイ 4602-BGJw)
2025/03/26(水) 22:53:57.57ID:dm/+cX2j0 皆さんいろいろと情報をどうもです
結局、以下のようなものと落ち着いてます
ちなみに使ってる環境のmakeはGNU Make 4.4で、GNU Makeの機能を多用してます
「$(OBJDIR)%.o: $(SRCDIR)%.c」と書ける理由は、pattern rulesという機能なのですかね
ここをforeachとかで書こうとしてましたが、これでいけると聞き、書いてみたら動いたのでもうそのままです
以外に汎用性が出そうだと感じてますが、改良点があればまたご意見ほしいです
PROGRAM = c_sample.exe
SRCDIR = ./src/
OBJDIR = ./obj/
INCDIR = ./include/
SRCS = $(wildcard ${SRCDIR}*.c)
OBJS = $(addprefix $(OBJDIR), $(notdir $(patsubst %.c, %.o, ${SRCS})))
INCS = $(wildcard ${INCDIR}*.h)
CC = gcc
CFLAGS += -g -Wall -I$(INCDIR)
all: $(PROGRAM)
$(PROGRAM): $(OBJS)
$(CC) $(CFLAGS) -o $(PROGRAM) $^
$(OBJDIR)%.o: $(SRCDIR)%.c $(INCS) Makefile
$(CC) $(CFLAGS) -c $< -o $(patsubst $(SRCDIR)%, $(OBJDIR)%, $@)
結局、以下のようなものと落ち着いてます
ちなみに使ってる環境のmakeはGNU Make 4.4で、GNU Makeの機能を多用してます
「$(OBJDIR)%.o: $(SRCDIR)%.c」と書ける理由は、pattern rulesという機能なのですかね
ここをforeachとかで書こうとしてましたが、これでいけると聞き、書いてみたら動いたのでもうそのままです
以外に汎用性が出そうだと感じてますが、改良点があればまたご意見ほしいです
PROGRAM = c_sample.exe
SRCDIR = ./src/
OBJDIR = ./obj/
INCDIR = ./include/
SRCS = $(wildcard ${SRCDIR}*.c)
OBJS = $(addprefix $(OBJDIR), $(notdir $(patsubst %.c, %.o, ${SRCS})))
INCS = $(wildcard ${INCDIR}*.h)
CC = gcc
CFLAGS += -g -Wall -I$(INCDIR)
all: $(PROGRAM)
$(PROGRAM): $(OBJS)
$(CC) $(CFLAGS) -o $(PROGRAM) $^
$(OBJDIR)%.o: $(SRCDIR)%.c $(INCS) Makefile
$(CC) $(CFLAGS) -c $< -o $(patsubst $(SRCDIR)%, $(OBJDIR)%, $@)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★10 [ぐれ★]
- 【日本大使館】中国在留邦人は安全確保を [ぐれ★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【朗報】愛国烈士ほんこん、高市首相のために長文を投稿wwwwwwwwwwwww [834922174]
- 小池百合子「キィィ…!なんでアタシより先に総理になってンのよ…あの女狐ッ!」
- ニートしかいない時間ってマジでつまんないよな
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 高市コイン、155円突破wwwwwwwwww [246620176]
- おじゃる丸をまったり待機するスレ🏡
