VC6 Tips / C++ライブラリをVisualC++6に対応させるノウハウ

バーチャルゲームライブラリGameCatapult成長日記
http://sowwa.blog4.fc2.com/blog-entry-44.html
より。

最近、C++でプログラムを組んでいないんでご無沙汰なんです。
ですが、C++で書いたテンプレートを使ったライブラリをVisualC++でコンパイルさせる事に関して私もかなり悩まされた覚えがあります。


で、結構昔の事なので情報のソースは忘れてしまいましたが^^;
GameCatapult成長日記の方でもかかれているようにクラス宣言後にtypedef しまくるってのがセオリーのようです。
例えば、std::mapのiteratorメンバ関数の引数として使うときは

template<class T>
class lib{
public:
typedef std::map<T,int> MAP_T;
typedef MAP_T::iterator iterator;
void setAny(iterator it){}
};

見たいな感じです。
たしかこのブログでもVC6でもコンパイルできるテンプレートライブラリを公開した覚えがあります。(バグ持ちですが^^;)
http://d.hatena.ne.jp/studiokingyo/20040607

で、GameCatapult成長日記にはVC6ではiterator_adapterが使えないとあるのですが・・・そうです(TT)
使えないんです!!!
昔、試しまたよ。もう、がんばりにがんばったけどコンパイルが無理やり通ってもなんか実行時に変なところ参照しちゃうみたいでダメって言う結論になって、それ以来、boostの美味しい所を使い切れていないVC6なんです。serializationもダメですし、boost::spiritも構文木生成が使えないって始末なんです。
それ以後、C言語しか触っていないような気もしないでもないのですが^^;
この際、VS2003買うかな?
と思う今日この頃なんです。いや、VS2005まで待つか!?(笑)