X



C++/TemplateMetaProgramming
0001デフォルトの名無しさん
垢版 |
2008/02/16(土) 12:45:02
・ここはC++のテンプレートメタプログラミング専用スレです。
・なかったので立てました。
・前にもあったような気がするけど気にしない。
・次期C++(0x) boost STLの話題も、TMPに関係するならここにどうぞ。

仲良く使ってね。
0606デフォルトの名無しさん
垢版 |
2016/07/30(土) 23:34:53.81ID:WLIyTwaV
>>605
わりと普通のテストでよくね?
0607デフォルトの名無しさん
垢版 |
2016/07/30(土) 23:35:01.17ID:ShugxVkw
あっ>>604のおかげで、自分がテンプレートの異常系のテスト
書けてないことに気づいた! 今!

どうやって書けばいいんだ「コンパイルエラーになったらOK」な
単体テストなんて……
0608デフォルトの名無しさん
垢版 |
2016/07/30(土) 23:38:54.87ID:ShugxVkw
>>606
個人的には辛いんだ
型引数ごとにテストケースが増えるせいで

俺テンプレートの設計がまずいのかもしれないし
テスト環境を使いこなせていないのかも
0609デフォルトの名無しさん
垢版 |
2016/07/30(土) 23:47:29.00ID:ShugxVkw
でも実際、ビジネスでTMP使う機会なんてそんなにないよね
必要なものは大抵ライブラリで揃ってるし

ここ数年ビジネスで書いたテンプレートなんて、sortやmapに渡す
比較ファンクタくらいなもんだ
0610デフォルトの名無しさん
垢版 |
2016/07/31(日) 00:52:52.61ID:BwQhep53
>>609
確かにね。
0616デフォルトの名無しさん
垢版 |
2016/10/30(日) 14:57:03.72ID:O4GwQcVb
>>614

こいつ、回答側の場合ずいぶん偉そうなものの言い方するやつじゃん
誰が助けてくれるんだよw
0619デフォルトの名無しさん
垢版 |
2016/11/11(金) 01:17:57.70ID:EDumE7xv
template<class T>
void foo(T t){
typedef T::valuetype tt;
//以下略
}

みたいな関数なにがしたいのかな
templateっていろんな型を代表できるのに
上記だと
Tがvaluetypeをもっていないとコンパイルできないじゃん
fooにintなんて渡せない
0620デフォルトの名無しさん
垢版 |
2016/11/11(金) 02:50:18.52ID:R5aqtocD
>>619
valuetypeをメンバに持つクラス/構造体を引数に取ることを想定した関数にしている

templateを使っているからといって、常にどんな型でも使える関数にする必要はない
0621デフォルトの名無しさん
垢版 |
2016/11/11(金) 03:38:29.50ID:CB2qWRAJ
>>619
コンパイルできないようにしてるんだよ…
0625デフォルトの名無しさん
垢版 |
2016/11/13(日) 20:49:57.87ID:NMmsi9ae
>>619
の例だと
template<class T>
void foo(T t);
を見ただけでは、Tになにを渡していい、渡すべきかがわからないってこと?

いちいち実装をみなきゃいけないの?
0627デフォルトの名無しさん
垢版 |
2016/11/13(日) 23:57:09.90ID:Ggvvb/9+
>>625
仕様を理解しないで使っちゃう人のために、コンパイルエラーにしてるんだよ。
0629デフォルトの名無しさん
垢版 |
2016/11/14(月) 00:19:36.49ID:8AzCWpe2
きみはgenericの汎用性を、あらゆる、という意味と履き違えている。

逆に全ての型に対して使える関数って役に立つの? 意味あるの?
関数の想定している要件を満たすT全てじゃ意味ないの?
0630デフォルトの名無しさん
垢版 |
2016/11/14(月) 00:32:58.25ID:BtUwB/sO
>>619
>Tがvaluetypeをもっていないとコンパイルできないじゃん
valuetypeをもっていたらコンパイルできるんか?
0632デフォルトの名無しさん
垢版 |
2016/11/14(月) 01:55:47.75ID:esjkHDa1
Java, C#の型制約と同じだろ

Haxe なら、
class A<T : (B, C)> { }

Tには、B, Cか、その派生クラスしか使えない
0633デフォルトの名無しさん
垢版 |
2016/11/14(月) 02:30:14.37
∀をつけると一見なんでもって感じで自由を得たような錯覚をするが、実はどんな型が来ても成り立たせないといけないという強烈な不自由を被る逆説的事象に苛むのである
∀は利用側が自由なのであって、提供側は猛烈な不自由の苦しみを味わうのだ

(コラム)
0635デフォルトの名無しさん
垢版 |
2016/11/14(月) 07:57:34.62ID:cdoyRzEZ
>>632
それならまだいい、関数本体のコードを読まなくても、宣言部だけで利用者はTに必要な要件がわかる。
0637デフォルトの名無しさん
垢版 |
2016/11/14(月) 20:38:01.70ID:xIkiXoiE
>>636
ソースが公開されてない、win32apiは宣言しかわからないよ、それでも十分に宣言を見ればわかる。
0640デフォルトの名無しさん
垢版 |
2016/11/22(火) 02:18:26.11ID:7Mf+uR5S
特定のクラスしか受け付けないテンプレートってなんなの?テンプレートにしなくてもよくね?
0642デフォルトの名無しさん
垢版 |
2016/11/22(火) 02:46:07.47ID:UcbrgWPr
それ、特定のクラスじゃなくてインターフェイス。traits使えば幸せになれるやつ。
0644デフォルトの名無しさん
垢版 |
2016/11/22(火) 12:51:23.77ID:OZ794KAs
まあ、特定の1つのクラスしか受け付けないってのなら、確かにtemplateにする意味ないね。
特定でも2つ以上のクラスに対応してるなら、意味あると思うよ。
0646はちみつ餃子 ◆8X2XSCHEME
垢版 |
2017/06/20(火) 02:21:52.34ID:3gaQOia7
>>644
ユーザが使う部分では意味ないかもしれないけど、
凝ったテンプレートを構成する部品としては意味ある場合もあるかも。
0647デフォルトの名無しさん
垢版 |
2017/10/30(月) 12:57:38.90ID:6+ZnRbeq
TMP!
0648デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:23:36.57ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

UWGL1
0649デフォルトの名無しさん
垢版 |
2018/07/05(木) 00:34:25.25ID:RfoszcD2
2L3
0651デフォルトの名無しさん
垢版 |
2021/03/22(月) 01:51:08.09ID:4Yc/PXPF
いまいちtmpの使い道がわからん
コンパイル時に決定してることしか扱えないって意味なくね?
ATMなら、人が引き出せる額を決定できないんでしょ
0652デフォルトの名無しさん
垢版 |
2021/03/22(月) 03:54:42.57ID:q7gQYNZZ
コンパイル時の前、設計時にさえ決まることがあるんだってな?
そう、アルゴリズムだよ!
レスを投稿する


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