■
Cryさん(id:Cryolite:20040714)がTypedefTemplatesについて書いてくれたので、私もその話題に乗せてもらうことに・・・
こういうのはトラックバックってのをしたほうがいいのかもしれないけど、ブログの何たるかを知らないぱせりは、もちろんトラックバックのやり方を知らない。orz
typedef templatesの詳しい解説はExceptionalC++で有名なハーブ様のpaperがあるのでそっちを見てください。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1406.pdf
typedef templatesを使えるとすると今までがんばってクラスでやってた一部がスマートになる。例えばこんな感じ。
template
typedef T remove_pointer;template <>
typedef T remove_pointer
もちろん普通に
template
typedef std::list> myList;
なんて使い方もできるといいと思う。
ただ私が一番あったら便利だなぁと思うのはtypedef templatesで定義したシノニムを実際のクラスとして扱えることかな。
template
typedef XMyAlias; template <>
struct MyAlias
{
//....
};
ジェネリックなT型に対してはMyAliasはX
それなら別にForMyAliasクラスを作ってあげて、そのクラスをMyAliasにタイプしてあげればいいと思うかもしれない。
こんな感じに・・・
template
typedef XMyAlias; struct ForMyAlias
{
//....
};template <>
typedef ForMyAlias MyAlias;
でもForMyAliasは実際MyAlias
何もForMyAliasとMyAlias
しかもこれは二者択一じゃないので、MyAlias
template
typedef XMyAlias; template <>
struct MyAlias
{
//....
};
ForMyAliasをめんどくさがらないで作れば同じことができるんだから、これは書き方の問題でしょという意見もあるかもしれないけど
それはtypedef templatesとrebindの話そのままな気もする。