1 // { dg-do compile }
2 // Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
3 // DR142: Injection-related errors in access example
4
5 class B { // { dg-error "inaccessible" }
6 public:
7 int mi; // { dg-error "inaccessible" }
8 static int si; // { dg-error "inaccessible" }
9 };
10
11 class D: private B {
12 };
13
14 class DD: public D {
15 void f();
16 };
17
f()18 void DD::f() {
19 mi = 3; // { dg-error "within this context" "" }
20 si = 3; // { dg-error "within this context" "" }
21 ::B b;
22 b.mi = 3;
23 b.si = 3;
24 ::B::si = 3;
25 ::B* bp1 = this; // { dg-error "inaccessible base" "" }
26 ::B* bp2 = (::B*)this;
27 bp2->mi = 3;
28
29
30 B b2; // { dg-error "within this context" "" }
31 B::si = 3; // { dg-error "within this context" "" }
32 }
33