summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.ext/typename1.C
blob: 2efeba93dfe01c4dbb8591d2e7a58b9f2e765e77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// { dg-do run  }
// Bug: g++ forgets about the instantiation of class1 when looking up
// class11_value, and tries to look things up in class1<class2>.

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 typename class1<typename ItIsClass2::class2_value>::class11::class11_value(10);
}

struct class2 {
  typedef int class2_value;
};

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