VC6の内部コンパイラエラー(fatal error C1001)に立ち向かう

以前にも書いた問題なんですが解決の糸口が見えてきました。
とりあえず、単純に2つのソースファイルとプリコンパイル済みヘッダ(stdafx.h, stdafx.cpp)からなるプロジェクトを作って、何をヘッダに含めるとC1001が発生するかテスト。最初に疑っていたのはboost周りでした。もともとVC6がboostに弱いというのは周知の事実なので、とりあえずそのあたりをヘッダに含めてビルド…できました。あと、身内用ライブラリ(DirectX、タスクシステム、簡単な構文解析など)も入れてみましたがOK。ここまでやってダメということは、プリコンパイル済みヘッダではなく、それを使用している側に問題がある…と思ってしばらく放置してました。
が、今日になってふと気が付いた重要なヘッダがありました。WTLです。これらは何気にかなりの考えられれます。

          
      
      

とりあえず今使ってるのだけ列挙してみましたが、これだけで1万行は軽く越えます(といっても、行数に問題があるとも思えないんですが)。そして、その大半はインライン関数の実装です。MFCをまんまインラインに書き換えたに近い形なのでこんな風になってしまっています。で、これをstdafx.hに含めたら…見事に引っかかりました。WTLを犯人です。しばらくは、これらをstdafx.hから外して置こうと思います。さようなら。