annotate gcc/testsuite/g++.dg/template/pr59930-1.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 // PR c++/59930
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 namespace N {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 template<typename T> class A {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 // The injected name is N::B, because we don;t look outside of N
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 template<typename U> friend struct B;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 private:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 int n; // { dg-message "declared private here" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 public:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 A (int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 template<typename T> struct B {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 int f(N::A<int> ai) { return ai.n; } // { dg-error "is private" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 int k = B<int>().f(0);