2 // Testcase for implicit 'typename' and resolution of 'typename's in the
23 struct base_trait<float> {
28 class weird : public base_trait<T>::base {
30 typedef typename base_trait<T>::base base;
36 { return this->bar(); }
40 typename weird<T>::base weird<T>::f ()
45 // The standard does not allow this case; the `typename' keyword may
46 // not appear in a ptr-operator.
49 int typename weird<T>::base::* weird<T>::g ()
56 return z.zowee() || z.f().bar();