// An older version 4.2.43 compiles this correctly. template <typename Type> class A { public: typedef int SomeType; }; template <typename Type> class B : public A<Type> { public: // Because the base class // is dependent on a template parameter, // nothing is visible by default. // A using declaration is needed // to make 'SomeType' visible. using A<Type>::SomeType; void f() { // But the Comeau compiler // still can not see 'SomeType'. SomeType a = 2; } }; int main() { B<int> b; b.f(); return 0; }