1*c87b03e5Sespie // GROUPS passed copy-ctors
2*c87b03e5Sespie #include <stdio.h>
3*c87b03e5Sespie 
4*c87b03e5Sespie int pass = 0;
5*c87b03e5Sespie class name {
6*c87b03e5Sespie   int namestuff;
7*c87b03e5Sespie public:
name()8*c87b03e5Sespie   name() {
9*c87b03e5Sespie     namestuff = 111;
10*c87b03e5Sespie   }
11*c87b03e5Sespie   name(const name& subject);
12*c87b03e5Sespie 
13*c87b03e5Sespie   name & operator = (const name& right) {
14*c87b03e5Sespie     this->namestuff = right.namestuff;
15*c87b03e5Sespie     return *this;
16*c87b03e5Sespie   }
17*c87b03e5Sespie 
~name()18*c87b03e5Sespie   ~name() {
19*c87b03e5Sespie     ;
20*c87b03e5Sespie   }
21*c87b03e5Sespie };
22*c87b03e5Sespie 
name(const name & subject)23*c87b03e5Sespie name::name(const name& subject) {
24*c87b03e5Sespie     pass = 1;
25*c87b03e5Sespie }
26*c87b03e5Sespie 
27*c87b03e5Sespie class person {
28*c87b03e5Sespie   int personstuff;
29*c87b03e5Sespie   name personname;
30*c87b03e5Sespie public:
person()31*c87b03e5Sespie   person() {
32*c87b03e5Sespie     ;
33*c87b03e5Sespie     personstuff = 222;
34*c87b03e5Sespie   }
~person()35*c87b03e5Sespie   ~person() {
36*c87b03e5Sespie     ;
37*c87b03e5Sespie   }
print()38*c87b03e5Sespie   void print() {
39*c87b03e5Sespie     ;
40*c87b03e5Sespie   }
41*c87b03e5Sespie 
42*c87b03e5Sespie };
43*c87b03e5Sespie 
44*c87b03e5Sespie void
test(person argp)45*c87b03e5Sespie test(person argp)
46*c87b03e5Sespie {
47*c87b03e5Sespie   person testp;
48*c87b03e5Sespie 
49*c87b03e5Sespie   ;
50*c87b03e5Sespie   argp.print();
51*c87b03e5Sespie   testp = argp;
52*c87b03e5Sespie   argp.print();
53*c87b03e5Sespie   testp.print();
54*c87b03e5Sespie   ;
55*c87b03e5Sespie }
56*c87b03e5Sespie 
main()57*c87b03e5Sespie int main()
58*c87b03e5Sespie {
59*c87b03e5Sespie   person mainp;
60*c87b03e5Sespie   test(mainp);
61*c87b03e5Sespie   if (pass)
62*c87b03e5Sespie     printf ("PASS\n");
63*c87b03e5Sespie   else
64*c87b03e5Sespie     { printf ("FAIL\n"); return 1; }
65*c87b03e5Sespie }
66*c87b03e5Sespie 
67