[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
708: デフォルトの名無しさん (ワッチョイ 7bf9-fnNf) [sage] 2025/03/03(月) 01:18:59.95 ID:KmDT379s0 マイナーなライブラリの使い方きいたらデタラメばっかだよ http://mevius.5ch.net/test/read.cgi/tech/1698705458/708
709: デフォルトの名無しさん (ワッチョイ 59f0-PCPn) [sage] 2025/03/03(月) 01:53:36.51 ID:t7PhNKj40 https://i.imgur.com/WuNDS00.png まぁな http://mevius.5ch.net/test/read.cgi/tech/1698705458/709
710: デフォルトの名無しさん (ワッチョイ 2ba2-KWHx) [] 2025/03/03(月) 09:52:35.09 ID:ZrscZeKh0 >>708 結局ところ学習ソースはネットだからネットで情報の少ない分野がいい加減になるのはしゃーない http://mevius.5ch.net/test/read.cgi/tech/1698705458/710
711: デフォルトの名無しさん (ブーイモ MMcb-fnNf) [sage] 2025/03/03(月) 10:09:12.99 ID:11DxD7kOM >>710 しゃなくはない 単なる現段階の技術的制約にすぎない わからんものはわからんと言うべき 簡単に受け入れるな http://mevius.5ch.net/test/read.cgi/tech/1698705458/711
712: デフォルトの名無しさん (ワッチョイ 0901-Nguo) [sage] 2025/03/03(月) 10:23:10.28 ID:Hx0aO5p40 自動小説製造機になに期待してんだか http://mevius.5ch.net/test/read.cgi/tech/1698705458/712
713: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1132-rXBA) [sage] 2025/03/05(水) 18:11:47.24 ID:+YosNdhq0 AI が人間の知能を模倣しようとする試みである以上は人間に似た限界もある。 何もかもの専門家であることは出来ない。 無料で使える ChatGPT はその性質上、汎用 AI として調整されてるし使えるリソースは少なめなのでこれで AI を判断しないほうがいいよ。 プログラミング専用に訓練した AI は本当に賢い。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/713
714: デフォルトの名無しさん (ワッチョイ 7956-s+rv) [] 2025/03/05(水) 18:48:09.02 ID:LRhSWm980 プログラミング専用ってどゆこと? http://mevius.5ch.net/test/read.cgi/tech/1698705458/714
715: デフォルトの名無しさん (ワッチョイ 79d7-9m9g) [sage] 2025/03/05(水) 19:22:05.63 ID:P80r5h460 Clineとかじゃね?しらんけど http://mevius.5ch.net/test/read.cgi/tech/1698705458/715
716: デフォルトの名無しさん (ワッチョイ 7956-s+rv) [] 2025/03/05(水) 19:41:16.61 ID:LRhSWm980 プログラミングの専門家ってなに?という疑問 言語仕様や構文、標準ライブラリに詳しい人またはAIのことかな? でもそれって特定ビジネスドメインの専門家ではないよね? たとえば高度な会計処理のプログラミングをAIにしてもらうことって可能なのかな? アプリケーションを完成させるにはプログラミングだけでなくビジネスドメインの知識も必要になると思うけど http://mevius.5ch.net/test/read.cgi/tech/1698705458/716
717: デフォルトの名無しさん (ワッチョイ 7956-s+rv) [] 2025/03/05(水) 19:44:29.61 ID:LRhSWm980 たとえば高位の税理士や会計士がプログラミング専門に訓練したAIに指示を出すことで会計ソフトを作ることはできるのだろうか? http://mevius.5ch.net/test/read.cgi/tech/1698705458/717
718: デフォルトの名無しさん (スッププ Sd33-F7vG) [sage] 2025/03/05(水) 19:45:37.93 ID:7KFkamxVd AIについて語りたいならスレ違い。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/718
719: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1132-rXBA) [sage] 2025/03/05(水) 19:51:32.43 ID:+YosNdhq0 具体的な話はしないよ。 ChatGPT を試した程度で AI を評価すべきじゃないという主旨。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/719
720: デフォルトの名無しさん (ワッチョイ 7956-s+rv) [] 2025/03/05(水) 19:51:57.29 ID:LRhSWm980 たとえば、はちみつ餃子さんはC++のこと詳しいけどどんなアプリでも作れるってわけじゃないよね? 医学とか専門性の高いものはその分野の知識も当然必要になってくると思うし そうするとプログラミングの専門家AIってなんだ? ほんとにプログラム作れるのか?という疑問が湧いてくる http://mevius.5ch.net/test/read.cgi/tech/1698705458/720
721: デフォルトの名無しさん (ワッチョイ fbef-qwdi) [] 2025/03/05(水) 23:39:44.64 ID:+5QIrElo0 ハチミツさんはどんなプログラムでも作れるよ 時間さえあれば http://mevius.5ch.net/test/read.cgi/tech/1698705458/721
722: デフォルトの名無しさん (オイコラミネオ MMfd-4fLd) [sage] 2025/03/06(木) 00:09:24.53 ID:r/i65GRXM ところで、「結局C++とRustってどっちが良いの?」でも質問したんだけど、 X(旧 twitter)で、C++ というキーワードが検索できないんだけど、 俺の環境だけなのか、一般的に他の人の環境でもそうなって いるのかどっち? http://mevius.5ch.net/test/read.cgi/tech/1698705458/722
723: デフォルトの名無しさん (ワッチョイ 0916-VeWP) [] 2025/03/06(木) 07:44:57.51 ID:87cY651N0 unsigned intをkeyとするstd::mapである値以上ある値以下のkeyの要素を全て削除したいんだけどどうしたらいいかな? http://mevius.5ch.net/test/read.cgi/tech/1698705458/723
724: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1132-CnOn) [sage] 2025/03/06(木) 09:03:07.49 ID:jh2IMGBN0 >>723 std::erase_if http://mevius.5ch.net/test/read.cgi/tech/1698705458/724
725: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 692e-rXBA) [sage] 2025/03/06(木) 18:24:33.81 ID:lbAGNheW0 >>722 記号を含むワードは検索できない。 投稿する側が配慮して #cpp や #cplusplus といったタグをつける習慣はあるけどそれほど浸透してないので網羅的に探す方法はないと思う。 普通のワードでも検索はなんかおかしいし。 おすすめが賢いようなのでフォローやお気に入りを積極的にしていくと快適に情報を集められるかもしれない。 昔はおすすめ機能に「いらんことするな」という意見が多かったけど思ったより良くできてるね。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/725
726: デフォルトの名無しさん (ワッチョイ 117c-9dXb) [sage] 2025/03/06(木) 19:34:30.93 ID:e0LjRkKt0 最近Rustに押されてるのは検索性の悪さと無関係じゃないと思う http://mevius.5ch.net/test/read.cgi/tech/1698705458/726
727: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1132-rXBA) [sage] 2025/03/06(木) 19:58:40.82 ID:jh2IMGBN0 Go とか BASIC とか Scheme なんかも日常的な語彙すぎて検索性は悪いが、検索自体が出来ないってことはないから組み合わせるワード次第でなんとかなるもんな。 日本語の文章という制約を入れればそれなりに絞れるし。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/727
728: 青木康善 (ワッチョイ 694e-rQ/Z) [] 2025/03/07(金) 14:22:29.06 ID:ANm5ssXN0 皆さん、アドバイス大感謝します。しかし、Javaはある程度分かるんですが、C++はなかなか手古摺ります。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/728
729: デフォルトの名無しさん (アウアウウー Sa1d-8P30) [] 2025/03/07(金) 14:57:48.23 ID:xU3go4h6a そもそもtwitterを検索に使おうって言う発想が貧困アタオカ http://mevius.5ch.net/test/read.cgi/tech/1698705458/729
730: デフォルトの名無しさん (ワッチョイ c907-CnOn) [sage] 2025/03/07(金) 19:27:12.87 ID:AEV18jyF0 通常のwebより、SNSのほうが新鮮でおいしいって若者は思ったりするらしいんだが それなら5chもいいぞ、名無しでいけるだけあって、愚問こいちゃっても後腐れは少ない http://mevius.5ch.net/test/read.cgi/tech/1698705458/730
731: デフォルトの名無しさん (ワッチョイ 2bc3-Ggml) [sage] 2025/03/07(金) 20:36:20.40 ID:49H/kgbx0 >>729 そうやって解決策を示さずに初心者を排除していると老害と言われるよ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/731
732: デフォルトの名無しさん (ワッチョイ 1302-aRqM) [!donguri] 2025/03/08(土) 14:23:59.19 ID:UEd3TNkS0 自分が初心者だった頃を思い出せば 新参者に優しくなれるだろ? http://mevius.5ch.net/test/read.cgi/tech/1698705458/732
733: デフォルトの名無しさん (ワッチョイ d6ab-ctMQ) [sage] 2025/03/09(日) 20:55:57.38 ID:kn1fZdL+0 初心者だった頃は、好き放題にぶっ叩かれてたな 同じようにするまいとは思うものの、他人を制止するのは(ry http://mevius.5ch.net/test/read.cgi/tech/1698705458/733
734: デフォルトの名無しさん (アウアウウー Sa89-u0Z4) [sage] 2025/03/09(日) 21:48:59.36 ID:ce6tc1GUa 初心者だったころはそもそもSNSもインターネッツもなくパソコン通信の黎明期で 周囲には俺以外C言語でプログラムしようという人間もいなかったから気楽だった http://mevius.5ch.net/test/read.cgi/tech/1698705458/734
735: デフォルトの名無しさん (ササクッテロル Sp85-ZS5M) [sage] 2025/03/13(木) 18:20:47.77 ID:0zFelsYRp 十年くらいC++触ってなくて、最近また触る機会があったんだが なんだこの[]()ってのは…ラムダ式なんて初めて見たよ http://mevius.5ch.net/test/read.cgi/tech/1698705458/735
736: デフォルトの名無しさん (ワッチョイ 3d07-ctMQ) [sage] 2025/03/13(木) 19:23:59.55 ID:UZM60pXP0 そういう古参さんは、頭に+つけるってのを聞くとちょっと喜ぶと思うw http://mevius.5ch.net/test/read.cgi/tech/1698705458/736
737: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c132-RdS+) [sage] 2025/03/13(木) 19:42:32.11 ID:FfpB+bg40 >>735 十年前にはもうあったよ! http://mevius.5ch.net/test/read.cgi/tech/1698705458/737
738: デフォルトの名無しさん (ワッチョイ c17c-aZJm) [sage] 2025/03/14(金) 07:38:33.30 ID:iWVzvedA0 すっぽすっぽ先生がC http://mevius.5ch.net/test/read.cgi/tech/1698705458/738
739: デフォルトの名無しさん (ワッチョイ c17c-aZJm) [sage] 2025/03/14(金) 07:40:07.31 ID:iWVzvedA0 すっぽすっぽ先生がC with Classesを作ってから最初の規格C++98まで19年 C++98からC++11まで13年 そしてC++11から今14年 http://mevius.5ch.net/test/read.cgi/tech/1698705458/739
740: デフォルトの名無しさん (ササクッテロル Sp85-ZS5M) [sage] 2025/03/14(金) 10:03:43.97 ID:uQBcUqUtp 十年くらい前に最新の書式を導入する情報もリスクを被る勇気も無いわな http://mevius.5ch.net/test/read.cgi/tech/1698705458/740
741: デフォルトの名無しさん (ワッチョイ dd01-5p3Z) [sage] 2025/03/14(金) 10:23:25.48 ID:PsWnmiZn0 >>736 なんスカそれ? http://mevius.5ch.net/test/read.cgi/tech/1698705458/741
742: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c132-ctMQ) [sage] 2025/03/14(金) 11:05:51.17 ID:B4ilMY360 >>741 ラムダ式の前に + を付けると関数ポインタに型変換できるという小ネタの話だと思う。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/742
743: デフォルトの名無しさん (アウアウウー Sa89-Cjjx) [sage] 2025/03/14(金) 15:50:51.90 ID:43evLOjOa キャプチャ付lambdaでさらに脳汁 http://mevius.5ch.net/test/read.cgi/tech/1698705458/743
744: デフォルトの名無しさん (ササクッテロル Sp85-ZS5M) [sage] 2025/03/14(金) 17:15:25.44 ID:flvbk/67p 迷走してますなぁw http://mevius.5ch.net/test/read.cgi/tech/1698705458/744
745: デフォルトの名無しさん (ワッチョイ dd01-5p3Z) [sage] 2025/03/14(金) 21:47:11.78 ID:PsWnmiZn0 >>742 初めて知った http://mevius.5ch.net/test/read.cgi/tech/1698705458/745
746: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c132-ctMQ) [sage] 2025/03/15(土) 09:10:45.56 ID:tr5ODwiQ0 >>745 実際にはラムダ式 (クロージャ型) に対しての特別な機能があるわけじゃなくて、単項 + にクロージャオブジェクトを渡そうとするとオーバーロード解決ルールの途中で適用可能な暗黙の変換が適用された結果としてそうなる http://mevius.5ch.net/test/read.cgi/tech/1698705458/746
747: デフォルトの名無しさん (スフッ Sd9a-JU6R) [sage] 2025/03/15(土) 17:45:50.20 ID:UQwxamXid [](){}(); http://mevius.5ch.net/test/read.cgi/tech/1698705458/747
748: デフォルトの名無しさん (ワッチョイ 1963-BNp6) [sage] 2025/03/15(土) 22:57:27.79 ID:nPJTLBuF0 停止性問題を一般のケースについて解く機械的手続きで有限時間で必ずおわるもの(アルゴリズム)は存在しないが 人間は納期までにプログラムえおデバッグできる……できる……たぶん…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/748
749: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/16(日) 09:48:31.74 ID:B4wnHsDg0 出来なかったら誰かがどういう形かで責任を取る。 それが社会ってもんだ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/749
750: デフォルトの名無しさん (ワッチョイ d963-lHAu) [sage] 2025/03/16(日) 11:01:20.74 ID:N4spayNe0 有限時間内に終わる機械的計算手続きとして存在するかという観点で考えたとき デバックの不可能なプログラムは存在しないという例の命題は偽な可能性、 もっともこの正確な引用は「バグのないプログラムは存在しないがデバックの不可能なプログラムもまた存在しない」であって全体として矛盾した主張であることは前から指摘されてあるが http://mevius.5ch.net/test/read.cgi/tech/1698705458/750
751: デフォルトの名無しさん (ワッチョイ d963-lHAu) [sage] 2025/03/16(日) 11:04:22.68 ID:N4spayNe0 訂正orz、 誤: 有限時間内に終わる機械的計算手続きとして存在するかという観点で考えたとき 正: 任意のプログラムのデバッグと言う手続きが有限時間内に終わる機械的計算手続きとして存在するかという観点で考えたとき http://mevius.5ch.net/test/read.cgi/tech/1698705458/751
752: デフォルトの名無しさん (ワッチョイ 1302-BOwI) [!donguri] 2025/03/17(月) 06:41:01.39 ID:/+A5sOUu0 ラムダ式に+の話は始めて知った 勉強になった http://mevius.5ch.net/test/read.cgi/tech/1698705458/752
753: デフォルトの名無しさん (オッペケ Sr9d-exlI) [sage] 2025/03/17(月) 09:17:27.77 ID:3/T8wXeSr >>746 それちょっとだけ解説きぼん ぶっちゃけなんとなくで使ってて気持ち悪かった http://mevius.5ch.net/test/read.cgi/tech/1698705458/753
754: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/17(月) 09:55:35.41 ID:xz+hBXXy0 オーバーロード解決のルールは大雑把には ・候補の中で実引数と完璧に型が一致するものがあればそれが選ばれる。 ・完璧な一致がないが暗黙の型変換を適用したら一致するという候補があればそれが選ばれる。 ということになってる。 実際には変換の中にも優先順位がごちゃごちゃあってかなり複雑なんだけど……。 で、組み込みの単項 + が受け取りうる型は何かというと算術型、スコープなし列挙型、またはポインタ型の三つ。 https://timsong-cpp.github.io/cppwp/n3337/expr.unary#op-7 キャプチャなしのクロージャ型は関数ポインタへの変換関数を持っている。 つまり暗黙の型変換が可能。 https://timsong-cpp.github.io/cppwp/n3337/expr.prim.lambda#6 クロージャからポインタへ暗黙の型変換をすれば単項 + に一致するからそれが選ばれる。 そういうメカニズムだと私は理解してるんだけど間違いがあったら誰か指摘してね。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/754
755: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/17(月) 09:58:44.63 ID:xz+hBXXy0 単項 + の話題がウケたみたいなのでオマケで * の話もしようかな。 単項 * にクロージャを渡した場合は関数の参照になる。 つまり *[](){} としたら型は void(&)() ってことね。 式中に参照が現れたら参照が指す先の型に変換されて、関数指示子が現れたら関数ポインタに変換されるので多くの状況では最終的に関数ポインタになっちゃうんだけど。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/755
756: デフォルトの名無しさん (ササクッテロル Sp9d-H5Hv) [sage] 2025/03/17(月) 10:46:49.46 ID:qCQLpZeYp 要するに副作用って事か 環境によってとかオプティマイズ如何で違った動きになる事は無いのかなぁ http://mevius.5ch.net/test/read.cgi/tech/1698705458/756
757: デフォルトの名無しさん (ブーイモ MM33-EPiB) [sage] 2025/03/17(月) 11:12:41.81 ID:ly7jZf+WM ならんだろw http://mevius.5ch.net/test/read.cgi/tech/1698705458/757
758: デフォルトの名無しさん (ササクッテロル Sp9d-H5Hv) [sage] 2025/03/17(月) 11:24:02.10 ID:F8F0vPkQp 昔、ARM系の環境で配列とポインタがまるっきり違う扱いになって困ったって事があったんだよなぁ http://mevius.5ch.net/test/read.cgi/tech/1698705458/758
759: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/17(月) 11:44:46.70 ID:xz+hBXXy0 >>756 これは言語仕様の話なので言語仕様に沿わないことがあるなら単にコンパイラのバグってだけだ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/759
760: デフォルトの名無しさん (スップ Sd33-pKjK) [sage] 2025/03/17(月) 13:02:56.94 ID:kJ3GyyA+d 「関数の配列」なんてものが存在しないC++で、関数ポインタに合法的な加減算することなんてないはずなのに、その仲間である単項+が効いちゃうのは気持ち悪くはある http://mevius.5ch.net/test/read.cgi/tech/1698705458/760
761: デフォルトの名無しさん (ワッチョイ 711b-yxlS) [] 2025/03/17(月) 13:42:24.96 ID:EbB+xfjB0 関数ポインタをインクリメントしたら次の関数になるとかだったら便利よね http://mevius.5ch.net/test/read.cgi/tech/1698705458/761
762: デフォルトの名無しさん (ブーイモ MM33-EPiB) [sage] 2025/03/17(月) 13:56:11.11 ID:ly7jZf+WM 次ってどこだよ http://mevius.5ch.net/test/read.cgi/tech/1698705458/762
763: デフォルトの名無しさん (ワッチョイ 711b-yxlS) [] 2025/03/17(月) 14:43:44.88 ID:EbB+xfjB0 関数のアドレス順とか http://mevius.5ch.net/test/read.cgi/tech/1698705458/763
764: デフォルトの名無しさん (ササクッテロル Sp9d-H5Hv) [sage] 2025/03/17(月) 15:28:39.42 ID:nF5lR4//p コード書いた順だろw http://mevius.5ch.net/test/read.cgi/tech/1698705458/764
765: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 217f-a7BF) [sage] 2025/03/17(月) 16:50:25.99 ID: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 の規格では今でも単項 + は算術型しか許してないし、それが自然だよな。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/765
766: デフォルトの名無しさん (アウアウエー Sa23-D2PX) [] 2025/03/18(火) 18:06:10.72 ID:2EW8BzNca >>760-762 各要素のサイズが一定じゃないから無理なんやろな http://mevius.5ch.net/test/read.cgi/tech/1698705458/766
767: デフォルトの名無しさん (ワッチョイ 1302-BOwI) [!donguri] 2025/03/21(金) 19:45:52.92 ID:zuSmXANM0 >>755 またまた勉強になったお! ありがとうございます!! http://mevius.5ch.net/test/read.cgi/tech/1698705458/767
768: デフォルトの名無しさん (ワッチョイ 1302-BOwI) [!donguri] 2025/03/21(金) 19:49:46.16 ID:zuSmXANM0 関数のアドレスなら呼び出して スタックに無理矢理アク(以下略) http://mevius.5ch.net/test/read.cgi/tech/1698705458/768
769: デフォルトの名無しさん (ワッチョイ 0107-exlI) [sage] 2025/03/21(金) 22:32:50.41 ID:pLF+KLC30 そういうむちゃくちゃが簡単にできるのがC/C++ そんなことしながら、チップを覚えるんだよなあ 自分、次はMIPS覚えないと http://mevius.5ch.net/test/read.cgi/tech/1698705458/769
770: デフォルトの名無しさん (アウアウエー Sa23-D2PX) [sage] 2025/03/22(土) 14:21:53.59 ID:U6/Lg1xxa どっかのタイミングでbpがスタックギリギリ飛ばすんじゃなくて コンパイラが128bytesくらい飛ばす仕様になった気がするんだけど あれは0埋めで(ホントはバグがあるのに)奇跡的にバグ回避するテクニックなのか 他に理由あるんか http://mevius.5ch.net/test/read.cgi/tech/1698705458/770
771: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-a7BF) [sage] 2025/03/22(土) 18:01:17.10 ID:nNEN9uWE0 >>770 128 ビット (16 バイト) じゃない? SIMD とかの都合で 16 バイトアラインが必要な環境が出てきたからという事情だと聞いたことある。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/771
772: デフォルトの名無しさん (ワッチョイ d963-lHAu) [sage] 2025/03/22(土) 20:51:53.87 ID:kbZO019Z0 質問なのですがstd::unique_ptr<T>とかstd::shared_ptr<T>みたいなSTLで定義済みの テンプレートクラスをfriendにすることは合法? 用途はシングルトンパティーンのオブジェクトのプログラム終了時の自動解放 http://mevius.5ch.net/test/read.cgi/tech/1698705458/772
773: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/22(土) 21:29:46.22 ID:nNEN9uWE0 >>772 T のデストラクタが private なのを std::unique_ptr<T> からのアクセスは許すってこと? 特に問題ないよ。 ところでテンプレートクラスじゃなくてクラステンプレートな! http://mevius.5ch.net/test/read.cgi/tech/1698705458/773
774: デフォルトの名無しさん (ワッチョイ d963-lHAu) [sage] 2025/03/22(土) 22:33:09.97 ID:kbZO019Z0 >>773 ㌧クス、 >T のデストラクタが private なのを std::unique_ptr<T> からのアクセスは許すってこと? >特に問題ないよ。 それがTのコンストラクタがprivateなパティーンなのです! friendにしないとビルドが通らないかった(VS2022、VS2015)。 多分moveとかの最にstd::unique_ptr<T>がTのコンストラクタにアクセスするのだと思う。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/774
775: デフォルトの名無しさん (ワッチョイ d963-lHAu) [sage] 2025/03/22(土) 22:39:33.53 ID: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が要る // スレッドセーフ化は省略 } // ... }; http://mevius.5ch.net/test/read.cgi/tech/1698705458/775
776: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e932-exlI) [sage] 2025/03/22(土) 23:40:24.86 ID:nNEN9uWE0 >>775 new Foo() を Foo のメンバ関数の中でやる分には自分自身の中でやることなので friend 宣言は不要。 std::make_unique<Foo>() をすると std::make_unique の中で Foo のコンストラクタを呼ぼうとするから std::make_unique<Foo> をフレンド宣言する必要がある。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/776
777: デフォルトの名無しさん (ワッチョイ d963-lHAu) [sage] 2025/03/22(土) 23:48:30.44 ID:kbZO019Z0 >>776 >new Foo() を Foo のメンバ関数の中でやる分には自分自身の中でやることなので friend 宣言は不要。 と思うじゃん? ↓現実 >friendにしないとビルドが通らないかった(VS2022、VS2015)。(>>774 エラーメッセージは熟読していませんぬが、 多分クラステンプレートの実体化がクラスのメソッド全部についてまとめて行われる的なことが起きて、 Tのコンストラクタにアクセスするstd::unique_ptr<T>のメンバ関数(moveコンストラクタとか)が引っかかるのだと予想 http://mevius.5ch.net/test/read.cgi/tech/1698705458/777
778: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-PAPZ) [sage] 2025/03/23(日) 00:18:05.56 ID: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(); } http://mevius.5ch.net/test/read.cgi/tech/1698705458/778
779: デフォルトの名無しさん (ワッチョイ ed7c-etgo) [sage] 2025/03/23(日) 00:19:16.26 ID:YXTjT4M+0 通ったが? https://godbolt.org/z/xzTbKaM5f http://mevius.5ch.net/test/read.cgi/tech/1698705458/779
780: デフォルトの名無しさん (ワッチョイ ed7c-etgo) [sage] 2025/03/23(日) 00:20:25.80 ID:YXTjT4M+0 あ、被った 内容は一緒 http://mevius.5ch.net/test/read.cgi/tech/1698705458/780
781: デフォルトの名無しさん (ワッチョイ 9901-Awih) [sage] 2025/03/23(日) 00:21:43.38 ID:/EbbY7QB0 >>777 エラーメッセージは読まんといかんよ 分からんときは今ならLLMに読ませると良い http://mevius.5ch.net/test/read.cgi/tech/1698705458/781
782: デフォルトの名無しさん (ワッチョイ e563-0why) [sage] 2025/03/23(日) 01:58:28.60 ID:IgihfQRv0 >>778>>779 お騒がせしましたサーセン;;;orz ビルドが通らないというのは私めの勘違いだった模様。 コードはそれで良いです。 そのコード(最小サンプル)、および最小サンプルにする前のコード×VS2015でもfriend宣言部分をコメントアウトしてビルドが通った 。n_ フレンド宣言friend std::unique_ptr<Foo>; を付けるに至った履歴が無いので推測ですだが デストラクタがprivateのままだったタイミングがあったのかも…… (m_pObjが生ポインタのタイプのSingletonはデストラクタがprivateでもビルドが通る(デストラクタを呼ぶ人が居ないため) →この状態でm_pObjをstd::unique_ptr<Foo>に変更してビルドエラー、アクセス許可が無いとコンパイラに言われて慌ててfriend追加、だった可能性、 http://mevius.5ch.net/test/read.cgi/tech/1698705458/782
783: デフォルトの名無しさん (ワッチョイ 622d-hk3H) [sage] 2025/03/23(日) 09:31:51.75 ID:CXYOr+7B0 繰り返しになるが熟読した方がいいぞ 無視していいメッセージかそうでないかも区別できるようになるから http://mevius.5ch.net/test/read.cgi/tech/1698705458/783
784: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-PAPZ) [sage] 2025/03/23(日) 09:32:31.18 ID: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(); } http://mevius.5ch.net/test/read.cgi/tech/1698705458/784
785: デフォルトの名無しさん (ブーイモ MM19-xG3a) [sage] 2025/03/23(日) 10:12:01.75 ID:i5B9IukZM それunique_ptrにする意味ある? shared_ptrなら意味わかるけど http://mevius.5ch.net/test/read.cgi/tech/1698705458/785
786: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-PAPZ) [sage] 2025/03/23(日) 10:45:14.55 ID:Ft35v0Bz0 >>785 意味ないな。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/786
787: デフォルトの名無しさん (ワッチョイ e563-0why) [sage] 2025/03/23(日) 10:56:08.84 ID: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の所有権移動は非同期に行われることはなさげ http://mevius.5ch.net/test/read.cgi/tech/1698705458/787
788: デフォルトの名無しさん (ワッチョイ e563-0why) [sage] 2025/03/23(日) 10:57:59.97 ID:IgihfQRv0 すまんこTeamsのノリで途中送信すたorz 誤: スレッド安全性担保がそこそこ重い同期オブジェクトで一方unique_ptrの所有権移動は非同期に行われることはなさげ 正: スレッド安全性担保がそこそこ重い同期オブジェクトで行われている危険性がある。一方unique_ptrの所有権移動は非同期に行われることはなさげなので多分軽量 http://mevius.5ch.net/test/read.cgi/tech/1698705458/788
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 214 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.024s