------- Additional Comments From jaco at kroon dot co dot za 2005-02-26 10:03 ------- A more complex example, this code works with gcc 3.3 so this imho is either incorrect code or a bug in the new parses:
template <class T> class FakeList { public: void foo() {}; }; template <class T> class Factory { public: typedef T* (*CreateType)(); typedef struct { char *name; CreateType creator; } TypePair; static FakeList<TypePair> _types; T* createOne() { _types.foo(); return 0; }; }; typedef Factory<int> IntFactory; /* * I've tried prefixing this with template <> * which them compiles, but fails to link. */ FakeList<IntFactory::TypePair> IntFactory::_types; int main(int, char**) { IntFactory blah; blah.createOne(); return 0; } I'm using gcc 3.4.3 on amd64. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11585