annotate gcc/testsuite/g++.dg/template/friend23.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +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: Alexandre Tolmos <ktulu@free.fr>
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 // PR c++/11876: Friend of its own class diagnostics
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 template <typename T>
kono
parents:
diff changeset
8 class A
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 friend class A<int>;
kono
parents:
diff changeset
11 friend class A<float>;
kono
parents:
diff changeset
12 protected:
kono
parents:
diff changeset
13 T _data;
kono
parents:
diff changeset
14 inline A() : _data(0) {}
kono
parents:
diff changeset
15 template <typename U>
kono
parents:
diff changeset
16 inline A(const A<U>& r) : _data(r._data) {}
kono
parents:
diff changeset
17 };
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 class B : public A<int>
kono
parents:
diff changeset
20 {
kono
parents:
diff changeset
21 public:
kono
parents:
diff changeset
22 inline B() {}
kono
parents:
diff changeset
23 inline B(const B& r) : A<int>(r) {}
kono
parents:
diff changeset
24 };
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 class C : public A<float>
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 public:
kono
parents:
diff changeset
29 inline C() {}
kono
parents:
diff changeset
30 inline C(const B& r) : A<float>(r) {}
kono
parents:
diff changeset
31 };
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 int main(int, char*[])
kono
parents:
diff changeset
34 {
kono
parents:
diff changeset
35 B b1, b2(b1);
kono
parents:
diff changeset
36 C c(b1);
kono
parents:
diff changeset
37 return 0;
kono
parents:
diff changeset
38 }