2 // { dg-additional-options "-ftree-vectorize" }
4 template <typename> struct a;
5 template <typename b> struct a<b *> {
9 template <typename e> class f {
14 typename ac::d operator[](typename ac::c o) { return ab[o]; }
16 template <typename> struct au;
17 template <typename b> au<b> operator+(au<b> o, au<b> p2) {
22 template <typename b> au<b> operator-(au<b> o, au<b> p2) {
27 template <typename b> au<b> operator*(au<b>, au<b> &p2) {
32 template <> struct au<double> {
33 double p() { return __real__ az; }
34 double q() { return __imag__ az; }
35 void operator+=(au o) {
39 void operator-=(au o) {
43 void operator*=(au &o) {
57 for (long j = 0; j < bm; ++j) {
58 au<double> n = br * h;