1// { dg-do run  }
2// { dg-options "-O2" }
3
4#include <iostream>
5#include <complex>
6
7using namespace std;
8
9class A {
10protected:
11  int a;
12  complex<double> *b;
13public:
14  A(int n);
15  inline complex<double>& operator[] (int x);
16};
17
18A::A(int n)
19{
20  a = n;
21  b = new complex<double>[a];
22  for (int i=0; i<a; i++) b[i] = complex<double>(0.0,0.0);
23}
24
25inline complex<double>& A::operator[](int x)
26{
27  if (x < 0 || x >= a)
28    cout << "x error" << endl;
29  return b[x];
30}
31
32void foo ()
33{
34  int n = 5;
35  A *o = new A(n);
36  A *p = new A(n);
37  for (int i = 0; i < n; i++) {
38    cout << i << endl;
39    (*o)[i] *= complex<double>((*p)[i].real(), (*p)[i].imag());
40  }
41}
42
43int main()
44{
45  foo();
46}
47