X



C++相談室 part163

■ このスレッドは過去ログ倉庫に格納されています
2022/12/30(金) 23:16:31.37ID:DPUEZfMS0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
C++相談室 part162
https://mevius.5ch.net/test/read.cgi/tech/1667194175/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/02/17(金) 12:17:47.03ID:CMo6McFXd
コードの検証ならちゃんとした検証ツールを使え
2023/02/17(金) 14:00:35.55ID:YLDwb/gm6
>>526

申し訳ないです。正しくは以下のURLです。
https://wandbox.org/permlink/uHOVPDqphdPBAPQe

ご指摘、ありがとうございました。
531デフォルトの名無しさん (スッップ Sdaa-zpWe)
垢版 |
2023/02/17(金) 18:18:23.14ID:VB0sml4Xd
>>530
流し読んだ感じだけど

1.
void roots( unsigned );
> // 自らがどのようにして生まれたかを調べるメソッド
> // 第 serialNo 番のインスタンスを探索する.

自分の親を探索するのか指定serialNoが子供にいるのかどっちだよ
あと検索なのでメンバを上書きしないはず。関数自体をconstにするべき

2.
engineは親のengineを参照すればいいのでわざわざ引数で受け取る必要はない
コンストラクタは親を受け取るのとengineを受け取る2種類用意したほうがいいんじゃない?

3.
numberフィールドはいらん(名前もchildCountに変えるべきだが)
childObj.size()を見ればいい
getter関数作ったほうがいい

4.
isLeafフィールドもchildObj().size()==0見れば判断できる
532デフォルトの名無しさん (ワントンキン MMfa-EB70)
垢版 |
2023/02/17(金) 18:50:34.09ID:HTK/9d/ZM
もう解決してんだからアドバイス気取りでがんばって蛇足を加えんでもいいよ
2023/02/17(金) 21:00:18.60ID:RlPt61in0
>>531

そこで図々しいお願いですが、そのように改造してくださると私にとって大いに勉強になります。
一肌脱いではいただけませんでしょうか?

生ポをスマポに直すのすら頭を抱えているヘタレなので、ここに棲まう先輩方のご鞭撻を是非に賜りたいです。
2023/02/17(金) 21:26:59.48ID:L7ElXWdV0
>>528
分かってんじゃん
C++の整数演算は無条件で全て検証が必要だよ
おっしゃる通りオーバーフローするかもしれないし、それが大きなセキュリティ問題につながった例もたくさんあるからね
特にナイーブにsigned/unsigned間比較や縮小変換をしてる所は危険だし、それを知らせてくれるコンパイラ警告は実に有用なものだ

もちろんプロダクトコードの話ね
2023/02/17(金) 22:01:30.31ID:wDoqrfUd0
縮小変換が警告されるかどうかと問題が起きないようにロジック組んであるかどうかは別問題だね
2023/02/17(金) 22:05:57.15ID:L7ElXWdV0
それはそう
コンパイラが知らせてくれるのは一番基本的な所だけだからな
逆に言えばそれすら対処してないようじゃ0点
537デフォルトの名無しさん (スッップ Sdaa-zpWe)
垢版 |
2023/02/17(金) 22:14:14.63ID:VB0sml4Xd
>>533
丸投げすんな自分でやれ
2023/02/17(金) 22:17:56.86ID:wDoqrfUd0
>>536
何がそれはそうなの?
2023/02/17(金) 22:41:19.78ID:iM8Xviia0
>>534
警告に惑わされずに全部見ろ

>>536
警告を隠すのと問題が無いことを確認するのをごちゃ混ぜにするアホ
2023/02/17(金) 22:44:01.98ID:KJxAAApA0
>>512
> 警告が出ないようにわざわざ使う
えっ、そんなレベルなのw
そりゃそんな職場なら
> 警告を消す為にバグを仕込むヤツを何度も見てきた
とかもあるんだろうな...
なんか可哀想になってきたわ
2023/02/17(金) 22:46:57.97ID:mQelUUv/0
>>467

> std::unordered_mapの同名関数はrehashingが起きてイテレータが無効になることがある

その場合でもvalue側のメモリは固定でしょうか?
2023/02/17(金) 22:48:24.15ID:mQelUUv/0
失礼、↑は>>487の間違い
2023/02/17(金) 22:54:29.06ID:iM8Xviia0
>>540
警告を消すためにわざわざ使うマクロを知らんのか
2023/02/17(金) 22:56:59.77ID:iM8Xviia0
◯◯のコンパイラや◯◯のチェックツールで警告が出るから直しとけ
って言われたら何の疑問も持たずに直すの?
◯◯はバグの元だから直せって言われたら
何の疑問も持たずに直すの?
思考停止?
2023/02/17(金) 23:43:41.95ID:KJxAAApA0
>>543
なんのマクロのことを言ってるのか知らんけどそんなの処理系によって違うだろ
最近の流れは>>514のような属性指定
2023/02/17(金) 23:45:03.57ID:BuPJ3Mmy0
ぶっちゃけテストしてるなら警告放置でもいいけど、
テストするような人は警告にも対処するからな
2023/02/17(金) 23:48:24.98ID:KJxAAApA0
>>544
指摘されてるんだからなぜその指摘が出てるのか調べて直すなり警告抑止するなりするだろ
なぜなんの疑問も持たずにとか出てくるのか不思議だけど君の職場ではそうなんだろうねw
2023/02/17(金) 23:53:50.54ID:wDoqrfUd0
見も知らん第三者にwell-formedなコードにケチつけられたら
言いなりにしろと押しつけてくるやつ、自分の姿をビデオでも鏡でもいいから見てみたら?
2023/02/18(土) 00:40:30.23ID:U7F6huSe0
多分「直す」を「何も考えずに警告抑止なりキャストなりで握り潰す」の意味で言ってるから噛み合ってないんだと思う
警告無視マンセー君以外はもちろんバグがないか確認した上で範囲チェックやクランプや(問題ないことを確認して)キャストなどを加えてプログラムを改良する意味で言ってる
2023/02/18(土) 02:15:58.71ID:AZBhix5KM
>>541
value のアドレスは変更になるが、valueが構造多やクラスで、中にポインタが
有るような場合は、そのポインタの値は変更されない。
2023/02/18(土) 02:21:04.46ID:AZBhix5KM
>>550
間違いました。unorderd_map の rehashingについて、こう有ります:
https://cplusplus.com/reference/unordered_map/unordered_map/rehash/
>Iterator validity
>If a rehash happens, all iterators are invalidated, but references and pointers to individual elements remain valid.
>If no actual rehash happens, no changes.

なので、iteratorは無効化されるが、個々の要素への参照やポインタは有効なまま残ります。
2023/02/18(土) 03:03:49.37ID:AZBhix5KM
>>551
ソース読まないとはっきりしないけど、恐らく、イテレーターが指している
オブジェクトのポインタを取得すると以前と同じ値になっている。
しかし、イテレーターには ++ で直後の要素に移動する機能が有る。
恐らくその機能が正しく働かない場合があるということらしい。
ゴミレスでごめん。
2023/02/18(土) 06:19:29.80ID:hapPzQ8z0
>>549
いろんな方法で検証は当然行う
コードを変えてわざわざ警告を隠す作業はしない
2023/02/18(土) 06:45:26.64ID:hapPzQ8z0
キャストして警告を隠す事がプログラムの改良だと思ってるアホとは会話しても無駄だな
2023/02/18(土) 06:50:44.99ID:FqZBdMS3d
>>548
それだと多分うっとりしておしまいになるやつ
2023/02/18(土) 07:23:37.23ID:/Gi8XN260
ナルシストか
そうだろうな
2023/02/18(土) 07:58:59.69ID:c4QxGie20
> キャストして警告を隠す事がプログラムの改良だと思ってるアホ
>>554 のことだなw
2023/02/18(土) 09:42:41.72ID:U7F6huSe0
まだ直すと隠すの区別ついてないアホのためによくある例書いとくね

std::vector<Foo> foos = /* なんか入ってる */
for(int i = 0; i < GetLegacyLength(); ++i){
 Hoge* item = GetLegacyItem(i);
 if (i < foos.size()) // WARNING: signedとunsigned比較してんぞ
 { hoge(foos[i], item); }
 else
 { fuga(item); }
}
アホの隠し方(1):脳死でif文のiかfoos.size()をキャストして隠蔽
アホの隠し方(2):脳死でiの型をsize_tに変更、そしてi < GetLegacyLength()でまた同じ警告が出て激怒「コンパイラの警告なんて無意味だ!」

正しい直し方:
なぜ長さを返すのに戻り値型がintなのか、GetLegacyLength()のマニュアルを見て仕様を確認する。
するとある条件でエラー値として-1を返すことがあると判明したので、
forループの前にGetLegacyLength()を取得するようにして、負の場合のエラー処理を追加した。

/*略*/
int len = GetLegacyLength();
if (len < 0) { /* エラー処理 */ }
else {
 for(size_t i = 0; i < static_cast<size_t>(len); ++i) { //lenは0以上と確認済みなので安全にキャストできる
/*略*/
2023/02/18(土) 09:55:17.94ID:q7/8BBWI0
>>558
そもそもforの条件判定の部分で関数を呼ぶのは間違いだ
2023/02/18(土) 10:01:12.90ID:U7F6huSe0
そこは間違いコード例だから意図的にそうしたんだけど
元がfor(int i = 0, len = GetLegacyLength(); i < len; ++i)だとしても話の本旨には関係ないよね?
お前が警告無視する時みたいに脳死で食いつくからそうなる
2023/02/18(土) 10:30:22.39ID:Cp9I+Lmgd
警告を無視するのと握りつぶすのを混同しとるな
2023/02/18(土) 11:02:45.42ID:c4QxGie20
>>559
それこそ脳死だろw
ループ毎に異なる値を返すかも知れないぞ
(もちろんそんな設計する奴は漏れ無くアホだが)
ちゃんと仕様なりソースを確認しろ
2023/02/18(土) 12:30:58.62ID:XNyuFiWW0
>>551,552
いえいえ、わざわざ調べてもらってありがとうございます!
vectorのメモリ再配置によるアボート障害が発生したので、ハッシュのときも
同様のことがないか気になっていました。
とりあえずハッシュの場合はアボートすることはなさそうですね。
2023/02/18(土) 12:34:06.96ID:/Gi8XN260
>>562
そういうおまえさん自身は
GetLegacyLengthとやらの仕様なりソースを確認しているのか?
2023/02/18(土) 12:47:29.66ID:jI/cauq9d
>>558
BOOL GetMessage のことですね判ります
2023/02/18(土) 12:49:33.03ID:c4QxGie20
>>564
自分が改修する立場ならな
当たり前だろ
もうそのレスがアホすぎる
2023/02/18(土) 13:05:02.97ID:/Gi8XN260
>>566
確認してないんだな?
じゃあ一般論としてあんな変なコードをいつも書いているのか?
話の本旨に関係ないのにわざわざあんな書き方するのは日常の勢いか?
2023/02/18(土) 13:09:54.02ID:/Gi8XN260
なんかおまえさんの話し方なのか口癖なのかわからんが鼻につくんだよ
well-formedなコードに対する警告をどうするかなんて
おまえさんが感情的に喚いたからって誰も考えは変えないぞ
技術的な議論で誰も分かったと言って来ない現実を
おまえさんはDQN口調でどうかしようとしているようだが恥を知れ
2023/02/18(土) 13:12:16.36ID:WT5oC+Bfd
諭されて反論できなくなったから重箱の隅突き始めたよ
ダッサ
2023/02/18(土) 13:17:40.85ID:/Gi8XN260
あのforに違和感を覚えないセンスのやつに
上から目線でご高説いただいても
自分はああはなりたくないと思うだけだからな
2023/02/18(土) 13:22:48.24ID:ldhLkjQ5d
そうだな
悪い例として出されたコード例に向かって粗探ししてハイセンス気取るような恥ずかしいアホにはなりたくないものだ
2023/02/18(土) 13:24:53.20ID:U7F6huSe0
ああいうダメコードを見つけ出すヒントとしてコンパイラ警告は使えるんだよっていう例を出したつもりだったんだけど難しかった?
2023/02/18(土) 13:28:32.75ID:/Gi8XN260
たまーに実在するからな、ああいうfor書くやつ
そういう手合いの言い訳はどいつが言っても同じ雑音でしかない
2023/02/18(土) 13:38:53.64ID:c4QxGie20
>>567
> 確認してないんだな?
> じゃあ一般論としてあんな変なコードをいつも書いているのか?
たった2行でよくこんなアホさが滲み出る文章書けるもんだな...
1行目もアホだと思うが2行目は脈絡もないのに「じゃあ」とかアホすぎる
こういう奴があの手のクソコードを書くんだろうなw
2023/02/18(土) 13:40:46.05ID:U67S6hSRd
警告警察アンチ君がfor文警察になってしまった
2023/02/18(土) 13:44:53.99ID:/Gi8XN260
>>574
頭冷やせよ
特定の関数の仕様が理由でなくて
あんなコード書いたのかと言っている

おまえさんこそあの手のクソコードとやらはどれのことで
それをなぜ俺が書いていることになったのか説明できるか?
2023/02/18(土) 13:45:46.69ID:8+fxePVqd
>おまえさんの
ごめん無理
2023/02/18(土) 13:58:29.96ID:5mGZNzlM0
低能警察に糞コードで反駁しようとしたら
収集がつかなくなったでござるの巻

警告を回避するためのコード変更がそんなに嫌ならコンパイラのオプションで警告を出さなくしたら良い……
2023/02/18(土) 14:07:37.26ID:/Gi8XN260
警告どころかコンパイラのバグを回避することだってある
むろん思い切り処理系に依存する内容となるが嫌とか好きとか言ってらんない
必要が出ればやるだけで感情の入る余地はない

どっかの思い上がった坊やの俺様節が五月蠅いだけ
黙ってくれれば俺にそれ以上の望みはない
2023/02/18(土) 14:12:09.71ID:5mGZNzlM0
警告をOFFにしたら警告を回避しようとしてバグを仕込んでしまう事故は確実に防げる
ていうか本質論としてはそもそも警告に頼らねばプログラミングもできない程度の低能はそもそもプログラミングをすべきではないという話、
これは反駁のしようが無い
2023/02/18(土) 14:13:36.72ID:c4QxGie20
>>576
> あんなコード書いたのかと言っている
そもそもあのコード書いたの俺じゃないことぐらい
>>562 > (もちろんそんな設計する奴は漏れ無くアホだが)
って書いてる見たらわかるだろ...

> それをなぜ俺が書いていることになったのか説明できるか?
誰もお前が書いたなんて書いてないけど頭大丈夫か?
脳死で
> for(int i = 0, len = GetLegacyLength(); i < len; ++i)
みたいな修正したらバグるかもよって話だぞ
2023/02/18(土) 14:15:48.28ID:/Gi8XN260
はいはい「俺じゃない」のね
IDコロコロする人とは話にならないな
2023/02/18(土) 14:32:47.85ID:U7F6huSe0
なんかすまんな
何気なく書いたダメコードのそれっぽいfor文がこんなにキチガイの琴線を刺激するとは思わなかった
2023/02/18(土) 14:35:25.61ID:/Gi8XN260
559の指摘にあの返事だからな
うわー香ばしいと思ったのよ
2023/02/18(土) 14:36:45.33ID:U7F6huSe0
黙れキチガイ
2023/02/18(土) 14:47:19.84ID:5mGZNzlM0
↑うんこ
2023/02/18(土) 14:52:57.45ID:aA0Lr1WO0
>>583
すまんと思うならもうROMっててくれ
これに返信も不要だからな
2023/02/18(土) 15:00:31.81ID:AfjXtSgB0
forやwhileの条件でstring::sizeを呼んでるけどダメ?
2023/02/18(土) 15:01:44.62ID:q7/8BBWI0
>>588
意図したものならまぁいいけど、後々のことも考えると普通は禁止
2023/02/18(土) 15:12:52.01ID:5mGZNzlM0
ループ内で変更しないstd::stringのstd::string::size()なら
コンパイラが頑張ってギリ括り出し最適化をしてくれるかもしれんがコンパイラに優しくない……

ていうか以降値が変化しないことがわかっているメンバ変数やグローバル変数は
intやsize_tみたいな単純型ならさっさとローカル変数にコピーした方がメモリからのロード命令削減のために良い
実体(メンバ変数やグローバル変数)と同じ値を保持するローカル変数(エイリアス)があったら混乱するというのは
そんな関数が(担当者の脳のキャパに比べて)デカすぐる……
2023/02/18(土) 15:14:50.51ID:c4QxGie20
>>582
IDコロコロ?
ちょっと回線切って頭冷やせw
2023/02/18(土) 15:26:22.78ID:/Gi8XN260
だから他人に指図すんな
警告をどうしようが回線をどうしようが
おまえさんに言われる筋合いはない

依頼心の強い甘ったれ野郎か?
2023/02/18(土) 15:32:46.92ID:3QwlbD5xd
依頼心の塊はこんなゴミ溜めでイキリ倒さないと自分を保てないお前さんの方だろ
for文警察出来て楽しかったでちゅか?
2023/02/18(土) 15:37:11.41ID:/Gi8XN260
こんなゴミ溜めでイキリ倒さないと自分を保てない → 依頼心が強い
全くつながらなくて説得力ないね
子供言葉にお似合いのしょーもない言い返しだなw
2023/02/18(土) 15:46:04.40ID:DOhL3WBHd
j「コンパイラの警告は全てゴミだから無視するべき、なぜなら>>558のfor文がダサいから」なんて主張をしてる奴への罵倒になぜ論理性が求められるのか分からない
バカアホマヌケ依頼心野郎で充分だろお前もそうなんだし
2023/02/18(土) 15:55:18.34ID:/Gi8XN260
へー、この流れをそう読んでいたのか
我ながらひどく買い被りすぎてたもんだ
そりゃー話になるわけないよな
2023/02/18(土) 15:58:59.97ID:/Gi8XN260
警告は内容によっては無視する場合があると言ったのを
全て無視すると改変してまで言い返さないと気が済まないのか
子供言葉にry
2023/02/18(土) 16:00:51.47ID:hE3AXWNH0
そのうち惰性で内容を吟味せずに無視するようになりそうなので
がんばって警告は消してくスタイル
2023/02/18(土) 16:02:45.49ID:/Gi8XN260
無視してたらコンパイラのバージョンが上がって警告しなくなったやつもあるな
2023/02/18(土) 16:04:23.86ID:kbl+yJpad
なるほど558は警告を無視する場合な訳ね、理由はfor文がダサいからw
やっぱこのチンパンジーオモロイわ
何か言い返してくるだろうけど、畜生の鳴き声に論理性なんて求めないから本能剥き出してくれていいよ
かわいいね
2023/02/18(土) 16:05:46.49ID:c4QxGie20
>>592
IDコロコロに触れられず顔真っ赤w
2023/02/18(土) 16:13:38.69ID:/Gi8XN260
for文の話で脳死が出てくる自己紹介な人だから
for文についての指摘が警告の話に短絡してしまったわけか
治してあげんの面倒臭いから放置するぜ
2023/02/18(土) 16:20:07.00ID:QwP9/dM9d
凄い、>>602が何一つ意味が分からない
本当に猿がランダムな日本語もどき書いてたんだな感動した
2023/02/18(土) 16:31:14.25ID:/Gi8XN260
忘れてるかも知れんがここは全世界から閲覧かのうな掲示板だよ
おまえさんの発言見てんの俺だけじゃないからね
第三者にクスクスされる文面には気をつけたら?
2023/02/18(土) 16:43:35.96ID:xVxS8guk0
自覚あったのに驚き。
2023/02/18(土) 16:47:29.84ID:c4QxGie20
顔真っ赤な人はクスクスどころかドン引きされてるみたいだけどねw
2023/02/18(土) 17:27:32.13ID:GQ7TKK8Hr
小杉の煽りが下手すぎてつまらん
2023/02/18(土) 22:16:29.02ID:tx6k3oAyM
>>563
unorderd_map のテストプログラムを作り、デバッガのステップ実行で、
ソースを調査することを進めます。デバッガを併用すると、単純にテキスト
エディタでソースを眺めるより楽です。
わざとrehashされる条件を作っておいて、*it が返すポインタが変化してないことを
確認したりもしてみてください。
2023/02/18(土) 22:20:44.13ID:tx6k3oAyM
>>608
誤: ソースを調査することを進めます。
正: ソースを調査することを薦めます。
誤: わざとrehashされる条件を作っておいて、*it が返すポインタが変化してないことを
正: わざとrehashされる条件を作っておいて、&*it が返すポインタが変化してないことを

unorderd_map<K,V>::iterator it に対して *it が V 型、&*it が V* 型ですね、確か。
2023/02/19(日) 01:04:05.04ID:j1lo6n64d
警告警察
goto警察
例外警察
いろいろいるね
2023/02/19(日) 02:44:27.50ID:XBUFkCxR0
本題から逸れた細かいことばかり言う人って他人から相談されなくなるよね
とりあえず本題に触れてあげたほうがいいと思う
2023/02/20(月) 10:46:49.72ID:4EtRnxBTr
>>607
小杉?
613デフォルトの名無しさん (アウアウエー Sa13-o4eO)
垢版 |
2023/02/20(月) 21:38:28.53ID:bUrAUmQja
>>610
じじい世代はここで
西部警察
がでてくる
2023/02/20(月) 23:51:57.53ID:7qph/rf50
>>610
警察警察もじきにあらわれるでしょう
2023/02/21(火) 06:19:53.28ID:lGumlqGfd
>>613
なんで?
2023/02/23(木) 12:36:30.12ID:v5/05dNG0
>>613
セーブ警察(定期的に保存しない者を取り締まる人)ですね
2023/02/25(土) 09:42:29.51ID:EkXmct6Y0
>>616
西部警察が東部を取り締まるみたいなロジック何それ……
2023/02/25(土) 10:26:54.98ID:+hyOJw/l0
まともなエディタなら自動セーブ機能くらいあるだろ
メモ帳で開発してんの?
2023/02/25(土) 10:42:44.98ID:FxeL/Fyd0
池袋駅は東口に西武デパートあるから問題ない
そして西口に東武
2023/02/25(土) 12:32:14.92ID:EkXmct6Y0
質問なのですが<random>の疑似乱数クラス(いっぱいある)って共通の基底クラスとかインターフェースとか無
いの?

乱数のseedをプログラムの中で1回だけ与えて初期化した疑似乱数オブジェクトを
関数foo()に渡したりして使いまわしたいのだけどfoo()は特定の疑似乱数クラスに依存させたくないという場合、
foo()を疑似乱数クラスTを受け取るテンプレートで実装するとか自作のインターフェースで疑似乱数クラスをwrapする以外に他無し?

それともそもそもそういうことはすべきではない(関数の中で都度乱数のseedをプログラムの中で1回だけ与えて初期化した疑似乱数オブジェクトを作れ
と神はお命じなのやろうか……
2023/02/25(土) 12:35:52.57ID:EkXmct6Y0
訂正orz、
誤: 自作のインターフェースで疑似乱数クラスをwrapする
正: 自作のインターフェースで疑似乱数クラスとDistributionクラスをセットでwrapする

<random>はテンプレート全振りすぎてオブジェクト指向的でない
ヤヴァイ……
2023/02/25(土) 12:52:10.86ID:k1cc/WLc0
>>621
そもそも何がしたいのか
seedの異なるものが同時に必要ならそうするしかない
2023/02/25(土) 13:02:15.45ID:sAnrfOr80
>>620
>関数foo()に渡したりして使いまわしたいのだけど
>foo()は特定の疑似乱数クラスに依存させたくないという場合、
foo()を関数テンプレートにし疑似乱数クラスをテンプレート引数とする
じゃだめなの?
2023/02/25(土) 13:06:02.14ID:EkXmct6Y0
>foo()を関数テンプレートにし疑似乱数クラスをテンプレート引数とする
>じゃだめなの?
通常はそれでも良いが
foo()が1万行ある関数だったとしてヘッダファイルに書くのかっていうか、
なんで疑似乱数を使うことと、書き方がテンプレートに制限されてしまうことが相関されねばならないのか
疑問に思わないのかそうか、、、
2023/02/25(土) 13:19:38.23ID:EkXmct6Y0
んまー現実解としてはどうせstd::mt19937をstd::random_deviceで初期化するような使い方しかしないのだろうから
using rand_t = std::random_device;
using psrand_t = std::mt19937;
class FooTest : public ::testing::Test {
protected:
 psrand_t m_psrand;
public:
 FooTest() : m_psrand(rand_t()()) { }
};
ぐらいで過度の抽象化はやめておいた方が良いのかもしれん……
(別名にする、程度にしておけば疑似乱数クラスの選択とDistributionクラスの選択を分離できる
2023/02/25(土) 13:21:23.18ID:a4UZTu4a0
標準ライブラリのテンプレートもみんなヘッダに書いてるんだしいらない疑問だと思うが……
使ったことは無いけど、気にするならC++20モジュールとして書いてみるといいかもしれない
2023/02/25(土) 13:25:58.19ID:sAnrfOr80
>>624
疑似乱数クラスは限定されているので
俺ならfooの実装はcppに書いて明示的インスタンス化をする
2023/02/25(土) 15:15:43.98ID:0MW4CaX30
>>620
result_typeが違うと、乱数のサイズが変わって、それに処理も合わせないといけないからな
素直にラップすればいいんじゃね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況