OSDN Git Service

953e80037b8db79800ca184f795d9dfa7921580e
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.mike / p2846.C
1 // prms-id: 2846
2
3 extern "C" int printf(const char *, ...);
4 extern "C" void exit(int);
5
6 class A;
7 class B;
8
9 class A {
10 public:
11
12   A(void){}
13   A(const A&){}
14   A(const B&);
15
16   virtual ~A(void){}
17
18   virtual void print(void) const {
19     printf("A::print\n");
20     printf("FAIL\n");
21     exit(1);
22   }
23   B compute(void) const;
24 };
25
26 class B : private A {
27 friend class A;
28 public:
29
30   virtual ~B(void){}
31
32   void print(void) const {
33     printf("B::print\n");
34   }
35
36 private:
37   B(const A& x, int){}
38 };
39
40 A::A(const B& s) {
41   s.print();
42 }
43
44 B A::compute(void) const {
45   B sub(*this, 1);
46   return sub;
47 }
48
49 main ()
50 {
51   A titi;
52   A toto = titi.compute();
53   printf("PASS\n");
54   return 0;
55 }