09/01/24 16:43:24
>>155-156
R<r> a;でいいじゃない。
160:157
09/01/24 17:11:30
>>158
> あえてtemplateを使う利点が整理できてないので考えてみます。
157 では、t->rdm() は、コンパイラによって必ず仮想関数呼び出しコードが出力される。
テンプレートバージョンでは、定数を返す場合などには、もしかしたらコードは全く無くなるかもしれない。
153 程度で大げさな、と思うかもしれないが、これもメタプログラミングだ。
実行時に通過するコードではなく、コンパイルで出力されるコードを、引数で変えることが出来るから。
C のプリプロセッサマクロでも出来るけど、C++ template は型チェックとそこから派生する特殊化された型の選択が強み。
> シンプルながら、これは説得力ありますね
157 の Q のデストラクタを見てみて。
あと、メモリ消費量が減るかも。
ところで、154 の記法の問題は、cl, bcc, gcc で試したけど、
R<r> a( (r)r() );
が一番互換性が高いようだ。
もちろん 159 でいいんだけどw 引数を明示したいならね。
161:デフォルトの名無しさん
09/01/24 18:32:50
> R<r> a( (r)r() );
たまたま‘r’という短い名前だからそれでいいかもしれんが、
名前が長かったり、さらにネストしたテンプレートクラスだったりすると
書くのも面倒だよ。
他にも
R<r> a = R<r>(r());
とか考えられるけど、やっぱり
R<r> a((r()));
が楽だと思うけどね。
162:デフォルトの名無しさん
09/02/14 00:35:29 BE:1969877186-2BP(0)
age
163:デフォルトの名無しさん
09/03/12 22:20:49
テンプレートの引数にテンプレート渡せるのか~知らなかった。
これで大分やれることが広がったぜ。ウヒヒ
ていうか、テンプレートの完全な仕様ってどこに行けばみれるの?
164:デフォルトの名無しさん
09/03/12 22:27:47
>>163
ちょうどこっちでその話があったところ。
スレリンク(tech板:758-767番)