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