1 // { dg-do run }
2 
3 // Test that A's copy assignment method is called when B's instance
4 // member array of A is assigned.
5 
6 // Contributed by Brian Gaeke, public domain.
7 int status = 1;
8 
9 class A
10 {
11 public:
12   int i;
13   A &operator =(const A &i);
14 };
15 
16 A a;
17 
18 A& A::operator=(const A &i)  {
19     status = 0;
20     return a;
21   }
22 
23 class B
24 {
25 public:
26   A arr[10];
27 };
28 
main(int argc,char ** argv)29 int main (int argc, char **argv)
30 {
31   B b;
32   b.arr[0].i = 15;
33   B a;
34   a = b; // trigger copy assignment
35   return status;
36 }
37