C++相談室 part166 (754レス)
C++相談室 part166 http://mevius.5ch.net/test/read.cgi/tech/1745631298/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
593: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5932-oZZu) [sage] 2025/08/23(土) 02:11:02.56 ID:CHT0FIec0 >>592 それがタプルライクの概念。 std::tuple_size の特殊化など、いくつかのインターフェイスを実装すればタプルと同じように扱ってくれる仕組み。 それとは別に配列の場合とか、全てのデータメンバが公開直接メンバなクラスもありということになってるのは単純に箇条書きで数種類のパターンを示す形になってる。 それほどパターンが多くはないがひとつの原則で表せるわけでもない。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/593
594: デフォルトの名無しさん (ワッチョイ 7101-Im4V) [sage] 2025/08/23(土) 02:22:04.99 ID:HIKpDy1T0 >>593 >それほどパターンが多くはないがひとつの原則で表せるわけでもない。 キメぇよw http://mevius.5ch.net/test/read.cgi/tech/1745631298/594
595: デフォルトの名無しさん (ワッチョイ 2b10-fgJ7) [sage] 2025/08/23(土) 09:17:36.36 ID:rBYkDYvT0 構造的部分型とか静的ダックタイピングって呼ばれるやつ? http://mevius.5ch.net/test/read.cgi/tech/1745631298/595
596: デフォルトの名無しさん (ワッチョイ d326-PSkW) [] 2025/08/23(土) 13:12:32.34 ID:wVRYzYK20 >>591 int r1; float r2; long r3 r1, r2, r3 = foo(); って書きたいですね。Pythonみたく http://mevius.5ch.net/test/read.cgi/tech/1745631298/596
597: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 51e2-oZZu) [sage] 2025/08/23(土) 13:15:39.41 ID:DefMPT1k0 代入のときは tie を使う。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/597
598: デフォルトの名無しさん (ワッチョイ c9bc-zJwz) [] 2025/08/23(土) 15:01:16.09 ID:p3yrvAiP0 テンプレートの黒魔術で脳汁出てからが本番 http://mevius.5ch.net/test/read.cgi/tech/1745631298/598
599: デフォルトの名無しさん (ワッチョイ 5be0-Srv/) [sage] 2025/08/23(土) 15:37:03.06 ID:T+HzfXMC0 >>596 別の言語っぽくって考えは捨てた方が身のため http://mevius.5ch.net/test/read.cgi/tech/1745631298/599
600: デフォルトの名無しさん (ワッチョイ 9379-XJDV) [sage] 2025/08/23(土) 19:08:06.22 ID:VwZegIlc0 666! http://mevius.5ch.net/test/read.cgi/tech/1745631298/600
601: デフォルトの名無しさん (スフッ Sdb3-im2P) [] 2025/08/23(土) 19:56:19.30 ID:k0uySdFmd struct { int r1, float r2, long r3 } t; t = foo(); って描きたい struct に tuple からのコンストラクタを実装すれば良いのかな http://mevius.5ch.net/test/read.cgi/tech/1745631298/601
602: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5932-86vp) [sage] 2025/08/23(土) 20:18:30.70 ID:CHT0FIec0 >>601 最初から foo がその型で返せばいいんでないの? http://mevius.5ch.net/test/read.cgi/tech/1745631298/602
603: デフォルトの名無しさん (ワッチョイ 6dad-W0Wb) [sage] 2025/08/24(日) 12:07:46.50 ID:HqphwiLf0 C言語から続くカンマ演算子が分かってないんでは? http://mevius.5ch.net/test/read.cgi/tech/1745631298/603
604: デフォルトの名無しさん (ワッチョイ fee0-ea+o) [sage] 2025/08/24(日) 12:09:48.21 ID:gU3L8vdd0 Pythonあがりだから型を定義する意味がわかってないんだと思う http://mevius.5ch.net/test/read.cgi/tech/1745631298/604
605: デフォルトの名無しさん (ワッチョイ 15d6-VoZ8) [sage] 2025/08/25(月) 07:55:54.04 ID:O202BBJ90 a=10 a=’hello' 翻訳しながらだからできるんだろうけどね。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/605
606: デフォルトの名無しさん (ワッチョイ 86cf-tcs3) [sage] 2025/08/25(月) 08:19:19.75 ID:X23BjBGY0 >590 左辺にも現れるからじゃね? http://mevius.5ch.net/test/read.cgi/tech/1745631298/606
607: 初心者プログラマー (ワッチョイ d5ce-rKTE) [] 2025/08/28(木) 17:50:07.17 ID:GULY1B8W0 cppでbazelでmediapipeのビルド方法を教えてくれる方はいませんか? 自分の環境 Visual Studio Community 2022 Windows11 64 ビット scoopでbazel 5.3.0 Python 3.10.0 http://mevius.5ch.net/test/read.cgi/tech/1745631298/607
608: 青木康善 (アウアウウー Sa47-Rd44) [sage] 2025/09/07(日) 03:16:03.97 ID:Fgms30k2a なんか、javaより簡単に思えてきました。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/608
609: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1732-F+lb) [sage] 2025/09/07(日) 06:54:14.37 ID:Ur1gsBeL0 そうか。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/609
610: デフォルトの名無しさん (ワッチョイ dbd6-ERpe) [sage] 2025/09/07(日) 07:39:38.11 ID:yhbLpr+z0 obj1=obj2; の後obj2を変更すると、obj1が書き換わってまってびっくりして その後、Javaが怖い親父です。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/610
611: デフォルトの名無しさん (ワッチョイ 7f5f-Z2G8) [] 2025/09/07(日) 13:56:14.79 ID:ZFShxqYO0 C/C++もポインタを代入するとそうなるよ http://mevius.5ch.net/test/read.cgi/tech/1745631298/611
612: デフォルトの名無しさん (ワッチョイ a380-1jR+) [sage] 2025/09/07(日) 15:17:34.87 ID:DiKqvn8B0 この親父他の言語ほぼ使えんだろ http://mevius.5ch.net/test/read.cgi/tech/1745631298/612
613: デフォルトの名無しさん (アウアウウー Sa47-Y7lD) [] 2025/09/07(日) 15:34:33.99 ID:AK/wIzqla 普通 https://ideone.com/wGzMHW p=[3,1,2] q=p p[1]=0 print(q) http://mevius.5ch.net/test/read.cgi/tech/1745631298/613
614: デフォルトの名無しさん (ワントンキン MMe6-+IOe) [sage] 2025/09/07(日) 16:53:15.89 ID:2DaEs5aKM >>610 >>613 それはオブジェクトへの参照の競合が起きてる それぞれで書き換え更新または読み取り中の書き換えをすることでスパゲッティなコードを招いてしまう その競合をコンパイルエラーにして防いでくれるのはRustだけだと思う http://mevius.5ch.net/test/read.cgi/tech/1745631298/614
615: デフォルトの名無しさん (ワッチョイ dbd6-ERpe) [sage] 2025/09/07(日) 17:20:59.28 ID:yhbLpr+z0 >>614 c/c++なら、ポインタなのか参照なのか見ればわかるし、 まずコンパイラが型をチェックしますんで。はい http://mevius.5ch.net/test/read.cgi/tech/1745631298/615
616: デフォルトの名無しさん (ワッチョイ 1ba6-aHNR) [sage] 2025/09/07(日) 17:34:06.57 ID:5bTmv8Qp0 参照メインの言語で書き換えを頻繁に行うとそりゃ事故るよ、注意力にも限界がある 値の書き換えをするならC++のように変数が直接値を持つ言語がいいし 参照をメインにするなら関数型言語のようにimmutableを基本にするべきだ http://mevius.5ch.net/test/read.cgi/tech/1745631298/616
617: デフォルトの名無しさん (オッペケ Sr3b-wO3q) [sage] 2025/09/07(日) 18:17:46.03 ID:kASsF2K3r ないしは、q=p; ってしたときに、pがダメになってくれるか http://mevius.5ch.net/test/read.cgi/tech/1745631298/617
618: デフォルトの名無しさん (ワントンキン MMe6-+IOe) [sage] 2025/09/07(日) 22:03:02.60 ID:2DaEs5aKM >>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; http://mevius.5ch.net/test/read.cgi/tech/1745631298/618
619: デフォルトの名無しさん (ワッチョイ dbd6-ERpe) [sage] 2025/09/08(月) 07:59:15.17 ID:It1Ffdlu0 >>618 これわ別問題じゃないのですか。 にしても、おとろしい push_backされた時点で再構築されて、新規作成のオブジェクトの要素を保持してしまったで合ってますか? http://mevius.5ch.net/test/read.cgi/tech/1745631298/619
620: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1732-F+lb) [sage] 2025/09/08(月) 10:27:54.64 ID:bx3qX9/R0 状況を一から説明すると…… これは fifth が古い無効になった場所を参照する可能性があることが問題。 std::vector の各要素は連続した空間に配置されることが保証されている。 要素の増減でその場所の都合が悪くなれば再配置される可能性があり、 再配置が起こったときは要素を指していたイテレータや参照は無効になるというルール。 無効なイテレータや参照を通じてアクセスしたら何が起こるかわからない。 再配置が起こる可能性がある操作については個々に仕様に書かれているけれど、 キャパシティを変更する (可能性がある) ような操作はどれも再配置が起こりえると覚えておけばいい。 そんでもってこれのややこしいところは「可能性がある」ってところで、 キャパシティをどれくらい拡大するか実装によって差があるし、 状況によっては場所を移動せずに大きさを伸ばせるかもしれない。 つまり問題が顕在化しないかもしれない。 一般論として倍々に延ばす実装がよく知られているからこの例では最初に要素を 8 個にして 顕在化しやすいようにしたんだろう。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/620
621: デフォルトの名無しさん (ワッチョイ dbd6-ERpe) [sage] 2025/09/08(月) 10:47:28.92 ID:It1Ffdlu0 >>620 どもです。要素数8ってのもさすがって感じでした。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/621
622: デフォルトの名無しさん (ワンミングク MM8a-+IOe) [sage] 2025/09/08(月) 22:24:25.56 ID:EA0JjXQaM >>620 今回の問題に限ればその通り ただし問題の本質は二つの参照(変数fifthとpush_back呼び出し時の参照)を使ったこと 今回はダングリング参照で問題を分かりやすく示したがメモリ問題もvectorも本質ではなく任意のデータに対する参照で問題が起きる 既に参照fifthを持つ状況で同じデータを指す別の参照を関数push_backに渡してデータが書き換えられた 参照fifthが指す値は当初から値が変更されてしまったりダングリングで無効な値になる可能性がある これが二つの参照の競合による問題で値がいつの間にか書き換わってしまっていることでバグも誘発する 両方の参照が書き換えを伴わないreadonlyの時のみ安全になる 片方もしくは両方の参照が書き換えを伴うと安全でなくなる http://mevius.5ch.net/test/read.cgi/tech/1745631298/622
623: デフォルトの名無しさん (ワッチョイ e3ad-ckwE) [sage] 2025/09/08(月) 23:06:53.70 ID:HoahUzIM0 再配置が行われるものに参照使って、その生存期間を超えてアクセスするのは未定義動作になるわな。C++に慣れてればそんなコードは書かないが、初級者向けではない。readonly より、lifetime の問題でしょう http://mevius.5ch.net/test/read.cgi/tech/1745631298/623
624: デフォルトの名無しさん (ワッチョイ 177c-h0AF) [sage] 2025/09/09(火) 00:29:11.16 ID:TMUamLpP0 参照が無効になる条件は規定されてるし、先にcapacity設定するとか避ける方法も用意されてる 「問題の本質」とやらはただのライブラリ仕様の無理解だろ 分かりにくいとか間違えやすいとかの批判なら分かるけど http://mevius.5ch.net/test/read.cgi/tech/1745631298/624
625: デフォルトの名無しさん (ワントンキン MM8a-+IOe) [sage] 2025/09/09(火) 07:24:41.95 ID:DVL1/TmTM >>623 >>624 申し訳ないがcapacityや再配置の話はしていない lifetimeや参照が無効になる話もしていない まずそれらを頭の中から消し去って考えよう 元々の話である同一データに対して参照が二つ持った時の話のみをしている もちろんvectorは登場してもしなくてもいい http://mevius.5ch.net/test/read.cgi/tech/1745631298/625
626: デフォルトの名無しさん (ワントンキン MM8a-+IOe) [sage] 2025/09/09(火) 07:29:27.85 ID:DVL1/TmTM 元々の話とは>>610や>>613でこれらが参照の競合の最も単純な例 様々な言語で発生してもちろんC++でも生じる 同一データに対して複数の参照を持つと他の参照によっていつの間にか指していたデータの値が書き換わってしまう これがバグやコードのスパゲッティ化を引き起こす最も大きな原因の一つ そのためreadonlyでない限り複数の参照を避けるのが好ましい そのため競合する参照を禁止している言語もある http://mevius.5ch.net/test/read.cgi/tech/1745631298/626
627: デフォルトの名無しさん (スフッ Sdba-bj1o) [] 2025/09/09(火) 10:47:02.21 ID:g327vfuJd readonlyでない競合する参照を禁止している言語もある http://mevius.5ch.net/test/read.cgi/tech/1745631298/627
628: デフォルトの名無しさん (ワッチョイ 97e4-1jR+) [sage] 2025/09/09(火) 12:16:08.28 ID:iPWQv8Oa0 はいはい線型論理言いたいだけ http://mevius.5ch.net/test/read.cgi/tech/1745631298/628
629: デフォルトの名無しさん (アウアウウー Sa47-Rd44) [sage] 2025/09/10(水) 00:51:51.50 ID:BnR46AnOa >>618 これはvにpush_backしたところでキャパ超えて別の場所にリアロックされ、ともない元のvの領域が空になって、即座にwがスポンとそのvが元あった場所に配置されたってことなのですか? http://mevius.5ch.net/test/read.cgi/tech/1745631298/629
630: デフォルトの名無しさん (スッププ Sdba-j4tR) [sage] 2025/09/10(水) 02:12:52.51 ID:IF/zSGeMd そうだよ。 規格上は何の保証もないから、処理系とかによっては全然違う結果になるかもしれないけど。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/630
631: 629 (アウアウウー Sa47-Rd44) [sage] 2025/09/10(水) 10:07:49.21 ID:3vsmg39oa >>630 どうもありがとう http://mevius.5ch.net/test/read.cgi/tech/1745631298/631
632: デフォルトの名無しさん (ワッチョイ 4e1f-bj1o) [] 2025/09/10(水) 10:13:08.62 ID:zTYInGVv0 >再構築されて新規の要素を保持してしまったで合ってますか こう聴かれると「違う」と返事したくなる http://mevius.5ch.net/test/read.cgi/tech/1745631298/632
633: デフォルトの名無しさん (ワッチョイ 177c-h0AF) [sage] 2025/09/10(水) 18:40:20.64 ID:Vv9EwJFH0 未定義動作だからな たまたま鼻から悪魔が出る代わりにそうなっただけだ http://mevius.5ch.net/test/read.cgi/tech/1745631298/633
634: デフォルトの名無しさん (ワッチョイ a75f-ckwE) [sage] 2025/09/10(水) 22:18:27.54 ID:RAO/BxQt0 参照の競合という用語に違和感。並行性に関わる競合状態 (race condition) の話をしようとしているのか? http://mevius.5ch.net/test/read.cgi/tech/1745631298/634
635: デフォルトの名無しさん (ワッチョイ b68c-1jR+) [sage] 2025/09/10(水) 22:31:03.50 ID:BZTqerG60 してない http://mevius.5ch.net/test/read.cgi/tech/1745631298/635
636: デフォルトの名無しさん (ワッチョイ a3d6-X2Ee) [sage] 2025/09/22(月) 23:24:45.15 ID:ZT49UQS30 でわ 簡単?な話題を。 int data{}; ってやります? int data{0}; ってやります? http://mevius.5ch.net/test/read.cgi/tech/1745631298/636
637: デフォルトの名無しさん (ワッチョイ 7f7c-3pIy) [sage] 2025/09/23(火) 06:55:15.77 ID:S9rfzcfC0 int data = 0; ってやる http://mevius.5ch.net/test/read.cgi/tech/1745631298/637
638: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f32-BMc3) [sage] 2025/09/23(火) 10:47:53.44 ID:0b1Ncss10 auto data = 0; とか、型が明示的なのが好みなら auto data = int(); といった選択肢もある。 私は int data = 0; 派だけど。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/638
639: デフォルトの名無しさん (ワッチョイ 8a02-CSnM) [sage] 2025/09/23(火) 10:57:08.68 ID:NP1ck5iL0 >>638 autoを使う理由は? http://mevius.5ch.net/test/read.cgi/tech/1745631298/639
640: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f32-BMc3) [sage] 2025/09/23(火) 11:12:21.28 ID:0b1Ncss10 >>639 暗黙的であれ明示的であれ初期化子に型があるのだからそれとは別にもう一度型を書くのは二度手間と言える場合がある。 どういう考え方をとるべきなのかは場合による。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/640
641: デフォルトの名無しさん (ワッチョイ 8a02-CSnM) [sage] 2025/09/23(火) 11:17:00.61 ID:NP1ck5iL0 >>640 autoは曖昧だから、ゆるいプログラム用だね シビアなプログラムは無理 http://mevius.5ch.net/test/read.cgi/tech/1745631298/641
642: デフォルトの名無しさん (ワッチョイ a3d6-X2Ee) [sage] 2025/09/23(火) 12:32:51.63 ID:zwbfimRS0 >>638 イテレータの返しを受けるオブジェクトはauto使うと便利みたいな http://mevius.5ch.net/test/read.cgi/tech/1745631298/642
643: デフォルトの名無しさん (ワッチョイ 46f6-RvFB) [sage] 2025/09/23(火) 14:23:55.04 ID:SO+rqWsF0 >>641 テンプレート作るときには必須になる場合もある ゆるいって理解は雑 http://mevius.5ch.net/test/read.cgi/tech/1745631298/643
644: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f32-BMc3) [sage] 2025/09/23(火) 14:48:06.92 ID:0b1Ncss10 前提条件を変えると何でも言えてしまう。 とりあえずここでは発端は >>636 なのだから変数 data の型が int であり (多相にはしない) 内容はゼロで初期化するという狭い仮定を置いたほうがよかろう。 auto を持ち出したのは変に話題を曲げてしまったな。すまぬ。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/644
645: デフォルトの名無しさん (オッペケ Sr23-RsoB) [sage] 2025/09/23(火) 20:34:08.12 ID:3YWvMRZsr 今北 いまさら人に聞けない auto って、右辺の型もそのまま左辺にコピーしてきてよ、って感じで使ってるんだけど その認識で間違ってない? 落とし穴とかある? http://mevius.5ch.net/test/read.cgi/tech/1745631298/645
646: デフォルトの名無しさん (ワッチョイ 467f-IpVF) [sage] 2025/09/23(火) 20:39:56.49 ID:7uroOMzl0 右辺が式の場合もあるし その時自分が思ってた型とautoの型が一致するとは限らないところとか http://mevius.5ch.net/test/read.cgi/tech/1745631298/646
647: デフォルトの名無しさん (ワッチョイ 73f0-ar7H) [sage] 2025/09/23(火) 21:26:37.10 ID:qWXNEai60 autoで手抜きしすぎるとあとでソース追うときにエライ苦労することあるから気を付けろよ http://mevius.5ch.net/test/read.cgi/tech/1745631298/647
648: デフォルトの名無しさん (ワッチョイ 8a02-CSnM) [sage] 2025/09/23(火) 21:34:42.79 ID:NP1ck5iL0 >>647 Pythonとか、 型が書かれてないから追いづらいよね http://mevius.5ch.net/test/read.cgi/tech/1745631298/648
649: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e328-BMc3) [sage] 2025/09/24(水) 02:24:38.07 ID:hHyw0Adk0 >>645 その認識でおおよそ正しいが変則的な部分もある。 auto foo = { 1, 2, 3 }; みたいに書くと initializer_list に推論されたりするのは知らないとちょっとびっくりするかもしれない。 それと修飾子などを組み合わせで使うことも出来る。 const auto* bar = &baz; みたいに。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/649
650: デフォルトの名無しさん (ワッチョイ 8a02-CSnM) [sage] 2025/09/24(水) 07:20:39.19 ID:tMR45KsJ0 >>649 何の目的であるの? C#的にゆるくなるだけだな… http://mevius.5ch.net/test/read.cgi/tech/1745631298/650
651: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f32-VPhE) [sage] 2025/09/24(水) 08:23:07.29 ID:yL+cLVSS0 >>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 は関数テンプレートだとする // ここでなんやかんや } みたいになってわずらわしい。 初期化子の型をそのまま持ってくれば良いときに型を明示しても可読性に貢献しないし、簡便な記法があると楽。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/651
652: デフォルトの名無しさん (JP 0Hc6-xemb) [] 2025/09/24(水) 12:48:43.78 ID:4f1PT/5nH std::make_sharedとか使うと行が長くなりがちだからauto便利 http://mevius.5ch.net/test/read.cgi/tech/1745631298/652
653: デフォルトの名無しさん (ワッチョイ 4a4e-rfem) [] 2025/09/24(水) 23:18:51.30 ID:OQUpbPvH0 autoでしか出来ないこともあるから奥が深い http://mevius.5ch.net/test/read.cgi/tech/1745631298/653
654: デフォルトの名無しさん (ワッチョイ e3a6-YvLc) [sage] 2025/09/24(水) 23:47:45.55 ID:wXWMV3aG0 罠仕様が仕込まれてるってだけでは http://mevius.5ch.net/test/read.cgi/tech/1745631298/654
655: デフォルトの名無しさん (オッペケ Sr23-RsoB) [sage] 2025/09/25(木) 06:56:54.48 ID:iHrblX0Rr Rust派に言わせれば、C++が罠らしいぞw でもそのC++が、今の俺を生んだ http://mevius.5ch.net/test/read.cgi/tech/1745631298/655
656: デフォルトの名無しさん (ワッチョイ 0679-P6+q) [sage] 2025/09/25(木) 16:58:42.68 ID:tx4jrZ/E0 有用なときもあるけど、ライブラリ用のコードで乱発するとメンテナンスが大変 可読性メンテナンス性を考えるなら、冗長でない限りはちゃんと書いた方がいい >>651 それもbaz(buz?)の戻り値の型はTから導出出来るんだから、よほどややこしくない限りはそれ(decltypeで手抜きせずに)を書いた方が可読性メンテナンス性の面では良い http://mevius.5ch.net/test/read.cgi/tech/1745631298/656
657: デフォルトの名無しさん (ワッチョイ 4640-RvFB) [sage] 2025/09/25(木) 17:00:57.66 ID:/3f9OB3n0 >>656 お前テンプレートプログラミングの素人さんだよね http://mevius.5ch.net/test/read.cgi/tech/1745631298/657
658: デフォルトの名無しさん (ワッチョイ 0679-P6+q) [sage] 2025/09/25(木) 20:40:29.81 ID:tx4jrZ/E0 >>657 自己紹介乙w Expression Template使って線形代数のライブラリ作った人間だが、ETで利用者がauto使うとどういう問題が起きるか答えてみ まさか分かりませんとか言わないよな? テンプレート使ったライブラリ(てか標準ライブラリ)を"利用する"しかしたことのない人間が調子に乗るな http://mevius.5ch.net/test/read.cgi/tech/1745631298/658
659: デフォルトの名無しさん (ワッチョイ 3b82-IpVF) [sage] 2025/09/25(木) 20:43:04.50 ID:nRsNESWS0 なんか「その理論を作ったのは私ですが」みたいなものを感じる 技術発表の際の怖い質問とかなんとかのやつw http://mevius.5ch.net/test/read.cgi/tech/1745631298/659
660: デフォルトの名無しさん (ワッチョイ 4a4e-rfem) [] 2025/09/25(木) 20:43:46.25 ID:ofoI5OnU0 言葉ならなんとでも言えるわな http://mevius.5ch.net/test/read.cgi/tech/1745631298/660
661: 650 (ワッチョイ 8a02-CSnM) [sage] 2025/09/25(木) 20:44:29.25 ID:hN2fGih80 >>651 ふーん 便利だね でも、templete自体が何だか好きじゃないわ… http://mevius.5ch.net/test/read.cgi/tech/1745631298/661
662: 650 (ワッチョイ 8a02-CSnM) [sage] 2025/09/25(木) 20:46:08.51 ID:hN2fGih80 >>656 ちゃんとっって、型を? 型が書いてないと、パット見でわからないよね… http://mevius.5ch.net/test/read.cgi/tech/1745631298/662
663: デフォルトの名無しさん (ワッチョイ 0679-P6+q) [sage] 2025/09/25(木) 20:54:22.86 ID:tx4jrZ/E0 >>662 そう&同感 ぱぱっと書いて何やってるかもすぐ分かるような場面(戻り値がイテレータとか)ではそりゃautoでいいと思うけどねぇ http://mevius.5ch.net/test/read.cgi/tech/1745631298/663
664: デフォルトの名無しさん (ワッチョイ ff67-ZW/Z) [sage] 2025/09/25(木) 21:36:33.99 ID:SUv+BSiy0 今ならconceptを使うのが筋が良いんだろうな 他の言語みたいに型制約を書かずにジェネリクスを使えるけど、これは良くも悪くもだよね 楽と言えば楽だけど http://mevius.5ch.net/test/read.cgi/tech/1745631298/664
665: デフォルトの名無しさん (ワッチョイ 7307-RsoB) [sage] 2025/09/26(金) 01:34:47.37 ID:aJA0eUoF0 >>658 リポジトリ晒して まさか出せませんとか言わないよな? テンプレート使ったライブラリ(てか標準ライブラリ)を"内製する"しかしたことのない人間が調子に乗るな http://mevius.5ch.net/test/read.cgi/tech/1745631298/665
666: デフォルトの名無しさん (ブーイモ MMbb-RvFB) [sage] 2025/09/26(金) 01:53:11.78 ID:IAhZoqBcM >>658 端的に言って > それもbaz(buz?)の戻り値の型はTから導出出来るんだから、 ここだよ 関数テンプレートなんだから型が導出できるとは限らない なぜお前は断言したのかな? 導出できない例にぶち当たったことがないからだよな http://mevius.5ch.net/test/read.cgi/tech/1745631298/666
667: デフォルトの名無しさん (ワッチョイ 0679-P6+q) [sage] 2025/09/26(金) 07:26:52.27 ID:uQKo8FSG0 >>665 >>668 煽ればタダで教えてもらえると思ってるいつものアホか >導出できない例 あるわけないだろどうやって実体化するんだよwwwwww http://mevius.5ch.net/test/read.cgi/tech/1745631298/667
668: デフォルトの名無しさん (ワッチョイ 8e02-C7mS) [] 2025/09/26(金) 08:15:01.31 ID:FGFv/5hn0 conceptはテンプレートだけじゃなく普通の変数制約にも使えればなぁ。 継承がほとんどいらなくなる。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/668
669: デフォルトの名無しさん (アウアウウー Sacf-kv3/) [] 2025/09/26(金) 10:28:59.69 ID:UkFmEBgMa >>647 判ります http://mevius.5ch.net/test/read.cgi/tech/1745631298/669
670: デフォルトの名無しさん (ワッチョイ 5301-QugL) [sage] 2025/09/26(金) 11:12:51.14 ID:TfDLIQWg0 手抜きというか情報を重複させないためにはautoが必要 苦労するのは型情報を追えないツールが悪い http://mevius.5ch.net/test/read.cgi/tech/1745631298/670
671: デフォルトの名無しさん (ワッチョイ bff0-ar7H) [sage] 2025/09/26(金) 11:53:52.65 ID:IRzSnzQy0 >>648 ああ、おそろしいあの言語は 素人にはササッと組めて楽チンだろうけど大掛かりなものは無理だろうな 想像しただけで脳が震えて耳から溶けて出てきそうだ http://mevius.5ch.net/test/read.cgi/tech/1745631298/671
672: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f32-VPhE) [sage] 2025/09/26(金) 12:02:33.14 ID:E9e6Z1Un0 expression template を auto で受けるとまずいってのは Eigen みたいな設計の話かな。 あれはムーブがない時代の設計だから一時オブジェクトの参照を保持してしまう (先に一時オブジェクトが解体されて寿命管理が破綻する) のが問題なのであって、解決のための仕組みが与えられたにもかかわらずそれを使ってない設計が悪い。 expression template の仕組み上でどうしても解決できないというわけではないし auto のせいでもない。 ムーブのコストすら許容できないだとか、古い C++ (C++03 以前) もサポートしなきゃならないみたいな事情があるなら「すまんけどこのライブラリを使うときは注意して」というべき筋合いの話で、「auto なんか使っとるからじゃ!」みたいな態度はおかしいだろ。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/672
673: デフォルトの名無しさん (ワッチョイ 0679-P6+q) [sage] 2025/09/26(金) 12:09:27.62 ID:uQKo8FSG0 >>672 >のが問題なのであって 違う。ETの場合、関数(演算子オーバーロード含む)が返すのは、式の構造を表すオブジェクトなのでそれをautoで受けると式の展開が行われず、計算処理の無いコードになってしまう それを逆手に取ってauto経由で展開のタイミング遅らせることもできるけどね あとETの利点はムーブどうこうで解決できる問題だけではないし、 誰も「ETを万人が使うべき」だなどと言っとらんよ、何が気に入らんかったの? で、はちみつお前いつも「知ったかぶりしていい加減なことを言う奴」に怒ってる割に、自分も同じ事してるよな http://mevius.5ch.net/test/read.cgi/tech/1745631298/673
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 81 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s