// Bug: g++ forgets about the instantiation of class1 when looking up
// class11_value, and tries to look things up in class1<class2>.

// Special g++ Options:

template<class ItIsInt>
struct class1 {
  struct class11 {
    typedef ItIsInt class11_value;
  };
};

template<class ItIsClass2>
struct class3 {
  int f();
};

template<class ItIsClass2>
int class3<ItIsClass2>::f()
{
  return class1<typename ItIsClass2::class2_value>::class11::class11_value(10);
}

struct class2 {
  typedef int class2_value;
};

int main()
{
  class3<class2> the_class3;
  the_class3.f();
}
