2005-10-01 [長年日記]

[Q3] ラベル (5)

オフラインでラベルを変更した場合の処理などを実装していたら、offlinejobファイルが正しく更新されないことがあるというバグを見つけてしまいました。気づかないところでやはりまだまだバグがありますね。

[C++] テンプレート引数

VC6はなぜかテンプレート引数をルックアップするときに他のローカル名を見てしまうようです。

template<class T>
struct X {
  typedef typename T::Foo Bar;
};

struct Y {
  typedef int Foo;
};

struct T {}; // (#)

void foo() {
  X<Y>::Bar bar;
}

(#)の行を削るとコンパイルできるようになります。適当なテンプレート引数を使うと使う場所によってエラーになってしまうので痛いです。ちなみに、当然ですがVC7以降では直っています。

[]