IT

c++のtemplateって便利ね


1: おいでよ!ガジェットの森 2022/04/26(火) 01:27:08.943 ID:YhEstEHPa
でも多分書いた人以外は読みづらいんだろうなぁとも思う

2: おいでよ!ガジェットの森 2022/04/26(火) 01:28:33.556 ID:maySjw2S0
俺はできるだけ使ってほしいわ
読む量が少なくなる方が嬉しい

 

5: おいでよ!ガジェットの森 2022/04/26(火) 01:33:21.955 ID:YhEstEHPa
>>2
確かにコードは減るかも?
構造自体が統一されていくから余程巨大なモジュールでなければいいのか
でもcrypto++とか読んでて吐きそうになった

 

3: おいでよ!ガジェットの森 2022/04/26(火) 01:31:28.614 ID:maySjw2S0
こういうスレには人来ないよな
一歩踏み込んだプログラミングスレ

 

4: おいでよ!ガジェットの森 2022/04/26(火) 01:32:25.894 ID:fWfQPz7na
rustのmacroみたいなやつ?

 

7: おいでよ!ガジェットの森 2022/04/26(火) 01:35:10.733 ID:YhEstEHPa
>>4
rustやったことないや……
ざっくり型推論の拡張みたいな感じ

 

8: おいでよ!ガジェットの森 2022/04/26(火) 01:36:03.222 ID:maySjw2S0
>>4
俺もrust知らんけどマクロとは違うと思うよ
多分同じ機能はあると思うけど

 

10: おいでよ!ガジェットの森 2022/04/26(火) 01:36:41.150 ID:fWfQPz7na
>>8
全然違かった

 

12: おいでよ!ガジェットの森 2022/04/26(火) 01:37:29.521 ID:maySjw2S0
>>10
多分>>6の理解で合ってると思う
言語違うと単語違うから混乱するよな

 

15: おいでよ!ガジェットの森 2022/04/26(火) 01:39:55.783 ID:fWfQPz7na
テンプレートガンガン使っていこう
型ごとに実装書いてたら気が遠くなる

 

16: おいでよ!ガジェットの森 2022/04/26(火) 01:40:25.390 ID:maySjw2S0
テンプレートとかジェネリクスは使ってるときめっちゃ楽しい
綺麗な構造が作れる感覚

 

19: おいでよ!ガジェットの森 2022/04/26(火) 01:43:35.629 ID:6suYXbMfa
C#だけどlistとかmapは便利だな
ジェネリクス使ったクラス作るのは面倒そうだが

 

25: おいでよ!ガジェットの森 2022/04/26(火) 01:48:13.226 ID:YhEstEHPa
>>19
それがやってみると結構便利なのよね
でもうまい伝え方がなかなか浮かばない……

 

35: おいでよ!ガジェットの森 2022/04/26(火) 01:58:13.851 ID:qHgfXLKDa

>>25
リストとかのデータ構造以外だと使うシチュエーションが思いつかんわ

>>26
そもそもそんな複数の型を受け取るクラスなんてそんなにあるか?

 

38: おいでよ!ガジェットの森 2022/04/26(火) 02:01:39.531 ID:maySjw2S0
>>35
たとえばだけど、バックエンドAPIとかパラメータがそれぞれ異なるから全部違うクラス定義をしたりするけど、パラメータが違っても決まり切った処理はあるからそういうときに使うと思う

 

43: おいでよ!ガジェットの森 2022/04/26(火) 02:09:31.074 ID:YhEstEHPa

>>38
cとほぼ同じって感じ?
テーブルにコールバック登録して呼び出すタイミングが来たら然るべきモジュールから実行してもらうような

>>41
実際デカくなった……
組み込みとかだと却下されるな

 

46: おいでよ!ガジェットの森 2022/04/26(火) 02:17:31.022 ID:maySjw2S0
>>43
デリケートの説明っぽくなってるけどそういうイメージになるね
結局はデータ構造が異なるけど処理の流れを統一したいときに使うような仕組みだね

 

26: おいでよ!ガジェットの森 2022/04/26(火) 01:49:16.451 ID:fWfQPz7na
ジェネリクスないクラスとかいちいち型名付けたクラス書かなきゃいけないってことだろ?辛くね

 

32: おいでよ!ガジェットの森 2022/04/26(火) 01:53:45.285 ID:fWfQPz7na
すごい遠回りでどんな話題からも高速フーリエ変換出してくる
ここ1年レスバして4,5回は出された

 

33: おいでよ!ガジェットの森 2022/04/26(火) 01:54:56.611 ID:maySjw2S0
ジェネリクスとかデリゲートや関数ポインタとか大好きだけどあんまり使うと嫌がられて悲しい

 

34: おいでよ!ガジェットの森 2022/04/26(火) 01:56:47.083 ID:YhEstEHPa
関数ポインタはc++だとvtableでの悪行が頭をよぎってしまい……

 

36: おいでよ!ガジェットの森 2022/04/26(火) 01:58:18.778 ID:sFdpgsng0
templateで驚けるならC#使えば泡吹いて倒れると思うよ

 

39: おいでよ!ガジェットの森 2022/04/26(火) 02:04:18.476 ID:sFdpgsng0
ジェネリクス無しだと無数に同じコード書くハメになる
C言語みたいな古代語だと無数に同じコードを書く必要がある
マクロを使っても本質的には変わらない

 

40: おいでよ!ガジェットの森 2022/04/26(火) 02:06:48.710 ID:maySjw2S0
実際はCでも同じことは実現できるけど余計な情報付加したりマクロやポインタ駆使したりで綺麗でも現実的でもないね

 

41: おいでよ!ガジェットの森 2022/04/26(火) 02:07:35.740 ID:YpQeE9Bx0
あまりに便利で多用するとバイナリサイズデカくなったな
テンプレートで指定した型の分だけアセンブリが生成される
最近コンパイラでどうだかわかんないけど

 

44: おいでよ!ガジェットの森 2022/04/26(火) 02:10:30.692 ID:sFdpgsng0
C++のtemplateは一応言語レベルでのサポートとはいえ
本質的にCのマクロと大差ないから使いすぎると色々な意味で死ねる

 

45: おいでよ!ガジェットの森 2022/04/26(火) 02:11:30.645 ID:YhEstEHPa
embedded c++ではそもそもtemplateの仕組み自体消し去られてるし……

 

47: おいでよ!ガジェットの森 2022/04/26(火) 02:25:48.676 ID:sFdpgsng0
最近Cの仕事で引数の型名以外一言一句全く何も違わない関数を4個書いたぞ
Cだと暗黒魔法に手を染めない限り共通化は不可能
現代語だとInterfaceという仕組みがあるからこんな悲劇は起きないのだ

 

48: おいでよ!ガジェットの森 2022/04/26(火) 02:29:01.188 ID:maySjw2S0
今はもう暗黒魔道士が淘汰されてよかったよ

 

-IT