C++/TemplateMetaProgramming
・ここはC++のテンプレートメタプログラミング専用スレです。
・なかったので立てました。
・前にもあったような気がするけど気にしない。
・次期C++(0x) boost STLの話題も、TMPに関係するならここにどうぞ。
仲良く使ってね。 メタプロ好きな奴でまともにコードテストやってる奴に会った事ない。 あっ>>604のおかげで、自分がテンプレートの異常系のテスト
書けてないことに気づいた! 今!
どうやって書けばいいんだ「コンパイルエラーになったらOK」な
単体テストなんて…… >>606
個人的には辛いんだ
型引数ごとにテストケースが増えるせいで
俺テンプレートの設計がまずいのかもしれないし
テスト環境を使いこなせていないのかも でも実際、ビジネスでTMP使う機会なんてそんなにないよね
必要なものは大抵ライブラリで揃ってるし
ここ数年ビジネスで書いたテンプレートなんて、sortやmapに渡す
比較ファンクタくらいなもんだ >>603
具体的にどんな? 「オーバーロードが見つからない」とか「候補は:」とかいう奴? このスレの伸びなさがTMPの必要性を考えさせるな〜 >>614
↑
こいつ、回答側の場合ずいぶん偉そうなものの言い方するやつじゃん
誰が助けてくれるんだよw >>616
解決したよ。世間はそんなに冷たくないよ。 助けてくれた人に感謝しろよ
今後、偉そうにもの抜かすなよ、 template<class T>
void foo(T t){
typedef T::valuetype tt;
//以下略
}
みたいな関数なにがしたいのかな
templateっていろんな型を代表できるのに
上記だと
Tがvaluetypeをもっていないとコンパイルできないじゃん
fooにintなんて渡せない >>619
valuetypeをメンバに持つクラス/構造体を引数に取ることを想定した関数にしている
templateを使っているからといって、常にどんな型でも使える関数にする必要はない >>619
コンパイルできないようにしてるんだよ… >>622
>value_typeだろバカ
例だからなんでもいいだろ.バカ >>619
の例だと
template<class T>
void foo(T t);
を見ただけでは、Tになにを渡していい、渡すべきかがわからないってこと?
いちいち実装をみなきゃいけないの? >>625
仕様を理解しないで使っちゃう人のために、コンパイルエラーにしてるんだよ。 >>626
うけとる型が決まってるなら、templateにする理由って? きみはgenericの汎用性を、あらゆる、という意味と履き違えている。
逆に全ての型に対して使える関数って役に立つの? 意味あるの?
関数の想定している要件を満たすT全てじゃ意味ないの? >>619
>Tがvaluetypeをもっていないとコンパイルできないじゃん
valuetypeをもっていたらコンパイルできるんか? >>629
その要件を満たすTをどうやって知ることができるんだ? Java, C#の型制約と同じだろ
Haxe なら、
class A<T : (B, C)> { }
Tには、B, Cか、その派生クラスしか使えない ∀をつけると一見なんでもって感じで自由を得たような錯覚をするが、実はどんな型が来ても成り立たせないといけないという強烈な不自由を被る逆説的事象に苛むのである
∀は利用側が自由なのであって、提供側は猛烈な不自由の苦しみを味わうのだ
(コラム) >>631
その関数のドキュメントなければコードを読む >>632
それならまだいい、関数本体のコードを読まなくても、宣言部だけで利用者はTに必要な要件がわかる。 >>636
ソースが公開されてない、win32apiは宣言しかわからないよ、それでも十分に宣言を見ればわかる。 すごいねー
俺はMSDN見ないとフラグの意味とかわからないわー 特定のクラスしか受け付けないテンプレートってなんなの?テンプレートにしなくてもよくね? それ、特定のクラスじゃなくてインターフェイス。traits使えば幸せになれるやつ。 まあ、特定の1つのクラスしか受け付けないってのなら、確かにtemplateにする意味ないね。
特定でも2つ以上のクラスに対応してるなら、意味あると思うよ。 参照やポインタじゃなくて値型で扱いたいのかもしれない >>644
ユーザが使う部分では意味ないかもしれないけど、
凝ったテンプレートを構成する部品としては意味ある場合もあるかも。 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
UWGL1 いまいちtmpの使い道がわからん
コンパイル時に決定してることしか扱えないって意味なくね?
ATMなら、人が引き出せる額を決定できないんでしょ コンパイル時の前、設計時にさえ決まることがあるんだってな?
そう、アルゴリズムだよ!