* doc/extend.texi (Loop-Specific Pragmas): Document pragma GCC unroll.
[official-gcc.git] / gcc / testsuite / g++.dg / ext / complex8.C
blob4d79cc645d14a525a0d344a995668e18135f2c0e
1 // PR libstdc++/48760
2 // { dg-do run { target c++11 } }
4 constexpr _Complex int i{1,2};
5 constexpr _Complex int j{3};
7 #define SA(X) static_assert((X),#X)
9 SA(__real i == 1);
10 SA(__imag i == 2);
11 SA(__real j == 3);
12 SA(__imag j == 0);
14 struct A
16   _Complex int c;
17   constexpr A(int i, int j): c{i,j} { }
18   constexpr A(int i): c{i} { }
21 constexpr A a1(1,2);
22 constexpr A a2(3);
24 SA(__real a1.c == 1);
25 SA(__imag a1.c == 2);
26 SA(__real a2.c == 3);
27 SA(__imag a2.c == 0);
29 typedef _Complex int ci;
31 SA((__real ci{1,2} == 1));
32 SA((__imag ci{1,2} == 2));
33 SA((__real ci{3} == 3));
34 SA((__imag ci{3} == 0));
36 struct B
38   _Complex int c;
39   int i;
42 constexpr B b1 = { { 1,2 }, 42 };
43 constexpr B b2 = { { 3 }, 24 };
44 // No brace elision for complex.
45 constexpr B b3 = { 5, 6 };
47 SA(__real b1.c == 1);
48 SA(__imag b1.c == 2);
49 SA(b1.i == 42);
50 SA(__real b2.c == 3);
51 SA(__imag b2.c == 0);
52 SA(b2.i == 24);
53 SA(__real b3.c == 5);
54 SA(__imag b3.c == 0);
55 SA(b3.i == 6);
57 int main()
59   ci* p = new ci{1,2};
60   if (__real *p != 1 || __imag *p != 2)
61     return 1;
62   delete p;
63   p = new ci{3};
64   if (__real *p != 3 || __imag *p != 0)
65     return 1;