* doc/extend.texi (Loop-Specific Pragmas): Document pragma GCC unroll.
[official-gcc.git] / gcc / testsuite / g++.dg / ext / unary_trait_incomplete.C
blobb60ce84dcb2323396338f58c445d68ed1c121bbd
1 // PR c++/39475
3 struct I; // { dg-message "forward declaration" }
4 struct C { };
6 bool nas1 = __has_nothrow_assign(I); // { dg-error "incomplete type" }
7 bool nas2 = __has_nothrow_assign(C[]);
8 bool nas3 = __has_nothrow_assign(I[]); // { dg-error "incomplete type" }
9 bool nas4 = __has_nothrow_assign(void);
10 bool nas5 = __has_nothrow_assign(const void);
12 bool tas1 = __has_trivial_assign(I); // { dg-error "incomplete type" }
13 bool tas2 = __has_trivial_assign(C[]);
14 bool tas3 = __has_trivial_assign(I[]); // { dg-error "incomplete type" }
15 bool tas4 = __has_trivial_assign(void);
16 bool tas5 = __has_trivial_assign(const void);
18 bool nco1 = __has_nothrow_constructor(I); // { dg-error "incomplete type" }
19 bool nco2 = __has_nothrow_constructor(C[]);
20 bool nco3 = __has_nothrow_constructor(I[]); // { dg-error "incomplete type" }
21 bool nco4 = __has_nothrow_constructor(void);
22 bool nco5 = __has_nothrow_constructor(const void);
24 bool tco1 = __has_trivial_constructor(I); // { dg-error "incomplete type" }
25 bool tco2 = __has_trivial_constructor(C[]);
26 bool tco3 = __has_trivial_constructor(I[]); // { dg-error "incomplete type" }
27 bool tco4 = __has_trivial_constructor(void);
28 bool tco5 = __has_trivial_constructor(const void);
30 bool ncp1 = __has_nothrow_copy(I); // { dg-error "incomplete type" }
31 bool ncp2 = __has_nothrow_copy(C[]);
32 bool ncp3 = __has_nothrow_copy(I[]); // { dg-error "incomplete type" }
33 bool ncp4 = __has_nothrow_copy(void);
34 bool ncp5 = __has_nothrow_copy(const void);
36 bool tcp1 = __has_trivial_copy(I); // { dg-error "incomplete type" }
37 bool tcp2 = __has_trivial_copy(C[]);
38 bool tcp3 = __has_trivial_copy(I[]); // { dg-error "incomplete type" }
39 bool tcp4 = __has_trivial_copy(void);
40 bool tcp5 = __has_trivial_copy(const void);
42 bool vde1 = __has_virtual_destructor(I); // { dg-error "incomplete type" }
43 bool vde2 = __has_virtual_destructor(C[]);
44 bool vde3 = __has_virtual_destructor(I[]); // { dg-error "incomplete type" }
45 bool vde4 = __has_virtual_destructor(void);
46 bool vde5 = __has_virtual_destructor(const void);
48 bool tde1 = __has_trivial_destructor(I); // { dg-error "incomplete type" }
49 bool tde2 = __has_trivial_destructor(C[]);
50 bool tde3 = __has_trivial_destructor(I[]); // { dg-error "incomplete type" }
51 bool tde4 = __has_trivial_destructor(void);
52 bool tde5 = __has_trivial_destructor(const void);
54 bool abs1 = __is_abstract(I); // { dg-error "incomplete type" }
55 bool abs2 = __is_abstract(C[]);
56 bool abs3 = __is_abstract(I[]); // { dg-error "incomplete type" }
57 bool abs4 = __is_abstract(void);
58 bool abs5 = __is_abstract(const void);
60 bool pod1 = __is_pod(I); // { dg-error "incomplete type" }
61 bool pod2 = __is_pod(C[]);
62 bool pod3 = __is_pod(I[]); // { dg-error "incomplete type" }
63 bool pod4 = __is_pod(void);
64 bool pod5 = __is_pod(const void);
66 bool emp1 = __is_empty(I); // { dg-error "incomplete type" }
67 bool emp2 = __is_empty(C[]);
68 bool emp3 = __is_empty(I[]); // { dg-error "incomplete type" }
69 bool emp4 = __is_empty(void);
70 bool emp5 = __is_empty(const void);
72 bool pol1 = __is_polymorphic(I); // { dg-error "incomplete type" }
73 bool pol2 = __is_polymorphic(C[]);
74 bool pol3 = __is_polymorphic(I[]); // { dg-error "incomplete type" }
75 bool pol4 = __is_polymorphic(void);
76 bool pol5 = __is_polymorphic(const void);