OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.old-deja/] [g++.other/] [friend1.C] - Blame information for rev 154

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 149 jeremybenn
// { dg-do assemble  }
2
// f() should be able to access B::j, as of FDIS [class.protected]/1
3
 
4
// Subject: Re: [bug] Inheritance and friend access control broken
5
// References: <199803032141.WAA09332@piano.dptmaths.ens-cachan.fr>
6
// 
7
// <199803041125.MAA06937@cor.dptmaths.ens-cachan.fr>
8
//  <19980304102900.46897@dgii.com>
9
// From: Alexandre Oliva 
10
// Date: 06 Mar 1998 01:43:18 -0300
11
 
12
template 
13
class X {};
14
 
15
template 
16
void g();
17
 
18
struct S;
19
 
20
template 
21
struct R;
22
 
23
class B {
24
protected:
25
  int i; // { dg-error "" } in this context
26
  static int j;
27
};
28
 
29
class D : public B {
30
  friend void f();
31
  template 
32
  friend void g();
33
  friend struct S;
34
  template 
35
  friend struct R;
36
};
37
 
38
struct S {
39
  void h();
40
  X<&B::j> x;
41
};
42
 
43
template 
44
struct R {
45
  void h();
46
  X<&B::j> x;
47
};
48
 
49
B b;
50
D d;
51
 
52
void f()
53
{
54
    b.i = 3; // { dg-error "" } protected
55
    d.i = 4;
56
    B::j = 5;
57
    D::j = 6;
58
}
59
 
60
template 
61
void g()
62
{
63
    b.i = 3; // { dg-error "" } protected
64
    d.i = 4;
65
    B::j = 5;
66
    D::j = 6;
67
}
68
 
69
template void g();
70
 
71
void S::h()
72
{
73
  b.i = 3; // { dg-error "" } protected
74
  d.i = 4;
75
  B::j = 5;
76
  D::j = 6;
77
}
78
 
79
template 
80
void R::h()
81
{
82
  b.i = 3; // { dg-error "" } protected
83
  d.i = 4;
84
  B::j = 5;
85
  D::j = 6;
86
}
87
 
88
template struct R;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.