annotate gcc/testsuite/g++.dg/template/crash21.C @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do compile }
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 // Origin: Debian GCC maintainers <debian-gcc@lists.debian.org>
kono
parents:
diff changeset
4 // Wolfgang Bangerth <bangerth@dealii.org>
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 // PR c++/16706: Dependent type calculation during access checking
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 template <typename> struct B {
kono
parents:
diff changeset
9 B() throw() {}
kono
parents:
diff changeset
10 struct S { };
kono
parents:
diff changeset
11 static int i;
kono
parents:
diff changeset
12 typedef unsigned short int dummy;
kono
parents:
diff changeset
13 };
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 template <typename _Tp>
kono
parents:
diff changeset
16 struct allocator: B<_Tp> {
kono
parents:
diff changeset
17 template<typename _Tp1> struct rebind
kono
parents:
diff changeset
18 { typedef allocator<_Tp1> other; };
kono
parents:
diff changeset
19 };
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 template<typename T, typename>
kono
parents:
diff changeset
22 struct X {
kono
parents:
diff changeset
23 typename allocator<T>::template rebind<int>::other i;
kono
parents:
diff changeset
24 typedef int* dummy;
kono
parents:
diff changeset
25 };
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 template <class T> class A {
kono
parents:
diff changeset
28 typedef typename X<T,allocator<T> >::dummy dummy;
kono
parents:
diff changeset
29 template <class TP> class XWrapper;
kono
parents:
diff changeset
30 };
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 template <class T>
kono
parents:
diff changeset
34 template <class TP> struct A<T>::XWrapper<TP *>
kono
parents:
diff changeset
35 {
kono
parents:
diff changeset
36 XWrapper() {}
kono
parents:
diff changeset
37 X<int,allocator<int> > x;
kono
parents:
diff changeset
38 };
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 template class A<int>::XWrapper<int *>;