1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -std=gnu++11 %s
2 #define T(b) (b) ? 1 : -1
3 #define F(b) (b) ? -1 : 1
4
5 struct NonPOD { NonPOD(int); };
6
7 // PODs
8 enum Enum { EV };
9 struct POD { Enum e; int i; float f; NonPOD* p; };
10 struct Empty {};
11 typedef Empty EmptyAr[10];
12 typedef int Int;
13 typedef Int IntAr[10];
14 typedef Int IntArNB[];
15 class Statics { static int priv; static NonPOD np; };
16 union EmptyUnion {};
17 union Union { int i; float f; };
18 struct HasFunc { void f (); };
19 struct HasOp { void operator *(); };
20 struct HasConv { operator int(); };
21 struct HasAssign { void operator =(int); };
22
23 struct HasAnonymousUnion {
24 union {
25 int i;
26 float f;
27 };
28 };
29
30 typedef int Vector __attribute__((vector_size(16)));
31 typedef int VectorExt __attribute__((ext_vector_type(4)));
32
33 // Not PODs
34 typedef const void cvoid;
35 struct Derives : POD {};
36 typedef Derives DerivesAr[10];
37 typedef Derives DerivesArNB[];
38 struct DerivesEmpty : Empty {};
39 struct HasCons { HasCons(int); };
40 struct HasCopyAssign { HasCopyAssign operator =(const HasCopyAssign&); };
41 struct HasMoveAssign { HasMoveAssign operator =(const HasMoveAssign&&); };
42 struct HasNoThrowMoveAssign {
43 HasNoThrowMoveAssign& operator=(
44 const HasNoThrowMoveAssign&&) throw(); };
45 struct HasNoExceptNoThrowMoveAssign {
46 HasNoExceptNoThrowMoveAssign& operator=(
47 const HasNoExceptNoThrowMoveAssign&&) noexcept;
48 };
49 struct HasThrowMoveAssign {
50 HasThrowMoveAssign& operator=(
51 const HasThrowMoveAssign&&) throw(POD); };
52 struct HasNoExceptFalseMoveAssign {
53 HasNoExceptFalseMoveAssign& operator=(
54 const HasNoExceptFalseMoveAssign&&) noexcept(false); };
55 struct HasMoveCtor { HasMoveCtor(const HasMoveCtor&&); };
56 struct HasMemberMoveCtor { HasMoveCtor member; };
57 struct HasMemberMoveAssign { HasMoveAssign member; };
58 struct HasStaticMemberMoveCtor { static HasMoveCtor member; };
59 struct HasStaticMemberMoveAssign { static HasMoveAssign member; };
60 struct HasMemberThrowMoveAssign { HasThrowMoveAssign member; };
61 struct HasMemberNoExceptFalseMoveAssign {
62 HasNoExceptFalseMoveAssign member; };
63 struct HasMemberNoThrowMoveAssign { HasNoThrowMoveAssign member; };
64 struct HasMemberNoExceptNoThrowMoveAssign {
65 HasNoExceptNoThrowMoveAssign member; };
66
67 struct HasDefaultTrivialCopyAssign {
68 HasDefaultTrivialCopyAssign &operator=(
69 const HasDefaultTrivialCopyAssign&) = default;
70 };
71 struct TrivialMoveButNotCopy {
72 TrivialMoveButNotCopy &operator=(TrivialMoveButNotCopy&&) = default;
73 TrivialMoveButNotCopy &operator=(const TrivialMoveButNotCopy&);
74 };
75 struct NonTrivialDefault {
76 NonTrivialDefault();
77 };
78
79 struct HasDest { ~HasDest(); };
80 class HasPriv { int priv; };
81 class HasProt { protected: int prot; };
HasRefHasRef82 struct HasRef { int i; int& ref; HasRef() : i(0), ref(i) {} };
83 struct HasNonPOD { NonPOD np; };
VirtHasVirt84 struct HasVirt { virtual void Virt() {}; };
85 typedef NonPOD NonPODAr[10];
86 typedef HasVirt VirtAr[10];
87 typedef NonPOD NonPODArNB[];
88 union NonPODUnion { int i; Derives n; };
89 struct DerivesHasCons : HasCons {};
90 struct DerivesHasCopyAssign : HasCopyAssign {};
91 struct DerivesHasMoveAssign : HasMoveAssign {};
92 struct DerivesHasDest : HasDest {};
93 struct DerivesHasPriv : HasPriv {};
94 struct DerivesHasProt : HasProt {};
95 struct DerivesHasRef : HasRef {};
96 struct DerivesHasVirt : HasVirt {};
97 struct DerivesHasMoveCtor : HasMoveCtor {};
98
99 struct HasNoThrowCopyAssign {
100 void operator =(const HasNoThrowCopyAssign&) throw();
101 };
102 struct HasMultipleCopyAssign {
103 void operator =(const HasMultipleCopyAssign&) throw();
104 void operator =(volatile HasMultipleCopyAssign&);
105 };
106 struct HasMultipleNoThrowCopyAssign {
107 void operator =(const HasMultipleNoThrowCopyAssign&) throw();
108 void operator =(volatile HasMultipleNoThrowCopyAssign&) throw();
109 };
110
111 struct HasNoThrowConstructor { HasNoThrowConstructor() throw(); };
112 struct HasNoThrowConstructorWithArgs {
113 HasNoThrowConstructorWithArgs(HasCons i = HasCons(0)) throw();
114 };
115
116 struct HasNoThrowCopy { HasNoThrowCopy(const HasNoThrowCopy&) throw(); };
117 struct HasMultipleCopy {
118 HasMultipleCopy(const HasMultipleCopy&) throw();
119 HasMultipleCopy(volatile HasMultipleCopy&);
120 };
121 struct HasMultipleNoThrowCopy {
122 HasMultipleNoThrowCopy(const HasMultipleNoThrowCopy&) throw();
123 HasMultipleNoThrowCopy(volatile HasMultipleNoThrowCopy&) throw();
124 };
125
126 struct HasVirtDest { virtual ~HasVirtDest(); };
127 struct DerivedVirtDest : HasVirtDest {};
128 typedef HasVirtDest VirtDestAr[1];
129
130 class AllPrivate {
131 AllPrivate() throw();
132 AllPrivate(const AllPrivate&) throw();
133 AllPrivate &operator=(const AllPrivate &) throw();
134 ~AllPrivate() throw();
135 };
136
137 struct ThreeArgCtor {
138 ThreeArgCtor(int*, char*, int);
139 };
140
is_pod()141 void is_pod()
142 {
143 { int arr[T(__is_pod(int))]; }
144 { int arr[T(__is_pod(Enum))]; }
145 { int arr[T(__is_pod(POD))]; }
146 { int arr[T(__is_pod(Int))]; }
147 { int arr[T(__is_pod(IntAr))]; }
148 { int arr[T(__is_pod(Statics))]; }
149 { int arr[T(__is_pod(Empty))]; }
150 { int arr[T(__is_pod(EmptyUnion))]; }
151 { int arr[T(__is_pod(Union))]; }
152 { int arr[T(__is_pod(HasFunc))]; }
153 { int arr[T(__is_pod(HasOp))]; }
154 { int arr[T(__is_pod(HasConv))]; }
155 { int arr[T(__is_pod(HasAssign))]; }
156 { int arr[T(__is_pod(IntArNB))]; }
157 { int arr[T(__is_pod(HasAnonymousUnion))]; }
158 { int arr[T(__is_pod(Vector))]; }
159 { int arr[T(__is_pod(VectorExt))]; }
160 { int arr[T(__is_pod(Derives))]; }
161 { int arr[T(__is_pod(DerivesAr))]; }
162 { int arr[T(__is_pod(DerivesArNB))]; }
163 { int arr[T(__is_pod(DerivesEmpty))]; }
164 { int arr[T(__is_pod(HasPriv))]; }
165 { int arr[T(__is_pod(HasProt))]; }
166 { int arr[T(__is_pod(DerivesHasPriv))]; }
167 { int arr[T(__is_pod(DerivesHasProt))]; }
168
169 { int arr[F(__is_pod(HasCons))]; }
170 { int arr[F(__is_pod(HasCopyAssign))]; }
171 { int arr[F(__is_pod(HasMoveAssign))]; }
172 { int arr[F(__is_pod(HasDest))]; }
173 { int arr[F(__is_pod(HasRef))]; }
174 { int arr[F(__is_pod(HasVirt))]; }
175 { int arr[F(__is_pod(DerivesHasCons))]; }
176 { int arr[F(__is_pod(DerivesHasCopyAssign))]; }
177 { int arr[F(__is_pod(DerivesHasMoveAssign))]; }
178 { int arr[F(__is_pod(DerivesHasDest))]; }
179 { int arr[F(__is_pod(DerivesHasRef))]; }
180 { int arr[F(__is_pod(DerivesHasVirt))]; }
181 { int arr[F(__is_pod(NonPOD))]; }
182 { int arr[F(__is_pod(HasNonPOD))]; }
183 { int arr[F(__is_pod(NonPODAr))]; }
184 { int arr[F(__is_pod(NonPODArNB))]; }
185 { int arr[F(__is_pod(void))]; }
186 { int arr[F(__is_pod(cvoid))]; }
187 // { int arr[F(__is_pod(NonPODUnion))]; }
188 }
189
190 typedef Empty EmptyAr[10];
191 struct Bit0 { int : 0; };
192 struct Bit0Cons { int : 0; Bit0Cons(); };
193 struct BitOnly { int x : 3; };
194 struct DerivesVirt : virtual POD {};
195
is_empty()196 void is_empty()
197 {
198 { int arr[T(__is_empty(Empty))]; }
199 { int arr[T(__is_empty(DerivesEmpty))]; }
200 { int arr[T(__is_empty(HasCons))]; }
201 { int arr[T(__is_empty(HasCopyAssign))]; }
202 { int arr[T(__is_empty(HasMoveAssign))]; }
203 { int arr[T(__is_empty(HasDest))]; }
204 { int arr[T(__is_empty(HasFunc))]; }
205 { int arr[T(__is_empty(HasOp))]; }
206 { int arr[T(__is_empty(HasConv))]; }
207 { int arr[T(__is_empty(HasAssign))]; }
208 { int arr[T(__is_empty(Bit0))]; }
209 { int arr[T(__is_empty(Bit0Cons))]; }
210
211 { int arr[F(__is_empty(Int))]; }
212 { int arr[F(__is_empty(POD))]; }
213 { int arr[F(__is_empty(EmptyUnion))]; }
214 { int arr[F(__is_empty(EmptyAr))]; }
215 { int arr[F(__is_empty(HasRef))]; }
216 { int arr[F(__is_empty(HasVirt))]; }
217 { int arr[F(__is_empty(BitOnly))]; }
218 { int arr[F(__is_empty(void))]; }
219 { int arr[F(__is_empty(IntArNB))]; }
220 { int arr[F(__is_empty(HasAnonymousUnion))]; }
221 // { int arr[F(__is_empty(DerivesVirt))]; }
222 }
223
224 typedef Derives ClassType;
225
is_class()226 void is_class()
227 {
228 { int arr[T(__is_class(Derives))]; }
229 { int arr[T(__is_class(HasPriv))]; }
230 { int arr[T(__is_class(ClassType))]; }
231 { int arr[T(__is_class(HasAnonymousUnion))]; }
232
233 { int arr[F(__is_class(int))]; }
234 { int arr[F(__is_class(Enum))]; }
235 { int arr[F(__is_class(Int))]; }
236 { int arr[F(__is_class(IntAr))]; }
237 { int arr[F(__is_class(DerivesAr))]; }
238 { int arr[F(__is_class(Union))]; }
239 { int arr[F(__is_class(cvoid))]; }
240 { int arr[F(__is_class(IntArNB))]; }
241 }
242
243 typedef Union UnionAr[10];
244 typedef Union UnionType;
245
is_union()246 void is_union()
247 {
248 { int arr[T(__is_union(Union))]; }
249 { int arr[T(__is_union(UnionType))]; }
250
251 { int arr[F(__is_union(int))]; }
252 { int arr[F(__is_union(Enum))]; }
253 { int arr[F(__is_union(Int))]; }
254 { int arr[F(__is_union(IntAr))]; }
255 { int arr[F(__is_union(UnionAr))]; }
256 { int arr[F(__is_union(cvoid))]; }
257 { int arr[F(__is_union(IntArNB))]; }
258 { int arr[F(__is_union(HasAnonymousUnion))]; }
259 }
260
261 typedef Enum EnumType;
262
is_enum()263 void is_enum()
264 {
265 { int arr[T(__is_enum(Enum))]; }
266 { int arr[T(__is_enum(EnumType))]; }
267
268 { int arr[F(__is_enum(int))]; }
269 { int arr[F(__is_enum(Union))]; }
270 { int arr[F(__is_enum(Int))]; }
271 { int arr[F(__is_enum(IntAr))]; }
272 { int arr[F(__is_enum(UnionAr))]; }
273 { int arr[F(__is_enum(Derives))]; }
274 { int arr[F(__is_enum(ClassType))]; }
275 { int arr[F(__is_enum(cvoid))]; }
276 { int arr[F(__is_enum(IntArNB))]; }
277 { int arr[F(__is_enum(HasAnonymousUnion))]; }
278 }
279
280 struct FinalClass final {
281 };
282
283 template<typename T>
284 struct PotentiallyFinal { };
285
286 template<typename T>
287 struct PotentiallyFinal<T*> final { };
288
289 template<>
290 struct PotentiallyFinal<int> final { };
291
is_final()292 void is_final()
293 {
294 { int arr[T(__is_final(FinalClass))]; }
295 { int arr[T(__is_final(PotentiallyFinal<float*>))]; }
296 { int arr[T(__is_final(PotentiallyFinal<int>))]; }
297
298 { int arr[F(__is_final(int))]; }
299 { int arr[F(__is_final(Union))]; }
300 { int arr[F(__is_final(Int))]; }
301 { int arr[F(__is_final(IntAr))]; }
302 { int arr[F(__is_final(UnionAr))]; }
303 { int arr[F(__is_final(Derives))]; }
304 { int arr[F(__is_final(ClassType))]; }
305 { int arr[F(__is_final(cvoid))]; }
306 { int arr[F(__is_final(IntArNB))]; }
307 { int arr[F(__is_final(HasAnonymousUnion))]; }
308 { int arr[F(__is_final(PotentiallyFinal<float>))]; }
309 }
310
311 typedef HasVirt Polymorph;
312 struct InheritPolymorph : Polymorph {};
313
is_polymorphic()314 void is_polymorphic()
315 {
316 { int arr[T(__is_polymorphic(Polymorph))]; }
317 { int arr[T(__is_polymorphic(InheritPolymorph))]; }
318
319 { int arr[F(__is_polymorphic(int))]; }
320 { int arr[F(__is_polymorphic(Union))]; }
321 { int arr[F(__is_polymorphic(Int))]; }
322 { int arr[F(__is_polymorphic(IntAr))]; }
323 { int arr[F(__is_polymorphic(UnionAr))]; }
324 { int arr[F(__is_polymorphic(Derives))]; }
325 { int arr[F(__is_polymorphic(ClassType))]; }
326 { int arr[F(__is_polymorphic(Enum))]; }
327 { int arr[F(__is_polymorphic(cvoid))]; }
328 { int arr[F(__is_polymorphic(IntArNB))]; }
329 }
330
is_integral()331 void is_integral()
332 {
333 int t01[T(__is_integral(bool))];
334 int t02[T(__is_integral(char))];
335 int t03[T(__is_integral(signed char))];
336 int t04[T(__is_integral(unsigned char))];
337 //int t05[T(__is_integral(char16_t))];
338 //int t06[T(__is_integral(char32_t))];
339 int t07[T(__is_integral(wchar_t))];
340 int t08[T(__is_integral(short))];
341 int t09[T(__is_integral(unsigned short))];
342 int t10[T(__is_integral(int))];
343 int t11[T(__is_integral(unsigned int))];
344 int t12[T(__is_integral(long))];
345 int t13[T(__is_integral(unsigned long))];
346
347 int t21[F(__is_integral(float))];
348 int t22[F(__is_integral(double))];
349 int t23[F(__is_integral(long double))];
350 int t24[F(__is_integral(Union))];
351 int t25[F(__is_integral(UnionAr))];
352 int t26[F(__is_integral(Derives))];
353 int t27[F(__is_integral(ClassType))];
354 int t28[F(__is_integral(Enum))];
355 int t29[F(__is_integral(void))];
356 int t30[F(__is_integral(cvoid))];
357 int t31[F(__is_integral(IntArNB))];
358 }
359
is_floating_point()360 void is_floating_point()
361 {
362 int t01[T(__is_floating_point(float))];
363 int t02[T(__is_floating_point(double))];
364 int t03[T(__is_floating_point(long double))];
365
366 int t11[F(__is_floating_point(bool))];
367 int t12[F(__is_floating_point(char))];
368 int t13[F(__is_floating_point(signed char))];
369 int t14[F(__is_floating_point(unsigned char))];
370 //int t15[F(__is_floating_point(char16_t))];
371 //int t16[F(__is_floating_point(char32_t))];
372 int t17[F(__is_floating_point(wchar_t))];
373 int t18[F(__is_floating_point(short))];
374 int t19[F(__is_floating_point(unsigned short))];
375 int t20[F(__is_floating_point(int))];
376 int t21[F(__is_floating_point(unsigned int))];
377 int t22[F(__is_floating_point(long))];
378 int t23[F(__is_floating_point(unsigned long))];
379 int t24[F(__is_floating_point(Union))];
380 int t25[F(__is_floating_point(UnionAr))];
381 int t26[F(__is_floating_point(Derives))];
382 int t27[F(__is_floating_point(ClassType))];
383 int t28[F(__is_floating_point(Enum))];
384 int t29[F(__is_floating_point(void))];
385 int t30[F(__is_floating_point(cvoid))];
386 int t31[F(__is_floating_point(IntArNB))];
387 }
388
is_arithmetic()389 void is_arithmetic()
390 {
391 int t01[T(__is_arithmetic(float))];
392 int t02[T(__is_arithmetic(double))];
393 int t03[T(__is_arithmetic(long double))];
394 int t11[T(__is_arithmetic(bool))];
395 int t12[T(__is_arithmetic(char))];
396 int t13[T(__is_arithmetic(signed char))];
397 int t14[T(__is_arithmetic(unsigned char))];
398 //int t15[T(__is_arithmetic(char16_t))];
399 //int t16[T(__is_arithmetic(char32_t))];
400 int t17[T(__is_arithmetic(wchar_t))];
401 int t18[T(__is_arithmetic(short))];
402 int t19[T(__is_arithmetic(unsigned short))];
403 int t20[T(__is_arithmetic(int))];
404 int t21[T(__is_arithmetic(unsigned int))];
405 int t22[T(__is_arithmetic(long))];
406 int t23[T(__is_arithmetic(unsigned long))];
407
408 int t24[F(__is_arithmetic(Union))];
409 int t25[F(__is_arithmetic(UnionAr))];
410 int t26[F(__is_arithmetic(Derives))];
411 int t27[F(__is_arithmetic(ClassType))];
412 int t28[F(__is_arithmetic(Enum))];
413 int t29[F(__is_arithmetic(void))];
414 int t30[F(__is_arithmetic(cvoid))];
415 int t31[F(__is_arithmetic(IntArNB))];
416 }
417
418 struct ACompleteType {};
419 struct AnIncompleteType;
420
is_complete_type()421 void is_complete_type()
422 {
423 int t01[T(__is_complete_type(float))];
424 int t02[T(__is_complete_type(double))];
425 int t03[T(__is_complete_type(long double))];
426 int t11[T(__is_complete_type(bool))];
427 int t12[T(__is_complete_type(char))];
428 int t13[T(__is_complete_type(signed char))];
429 int t14[T(__is_complete_type(unsigned char))];
430 //int t15[T(__is_complete_type(char16_t))];
431 //int t16[T(__is_complete_type(char32_t))];
432 int t17[T(__is_complete_type(wchar_t))];
433 int t18[T(__is_complete_type(short))];
434 int t19[T(__is_complete_type(unsigned short))];
435 int t20[T(__is_complete_type(int))];
436 int t21[T(__is_complete_type(unsigned int))];
437 int t22[T(__is_complete_type(long))];
438 int t23[T(__is_complete_type(unsigned long))];
439 int t24[T(__is_complete_type(ACompleteType))];
440
441 int t30[F(__is_complete_type(AnIncompleteType))];
442 }
443
is_void()444 void is_void()
445 {
446 int t01[T(__is_void(void))];
447 int t02[T(__is_void(cvoid))];
448
449 int t10[F(__is_void(float))];
450 int t11[F(__is_void(double))];
451 int t12[F(__is_void(long double))];
452 int t13[F(__is_void(bool))];
453 int t14[F(__is_void(char))];
454 int t15[F(__is_void(signed char))];
455 int t16[F(__is_void(unsigned char))];
456 int t17[F(__is_void(wchar_t))];
457 int t18[F(__is_void(short))];
458 int t19[F(__is_void(unsigned short))];
459 int t20[F(__is_void(int))];
460 int t21[F(__is_void(unsigned int))];
461 int t22[F(__is_void(long))];
462 int t23[F(__is_void(unsigned long))];
463 int t24[F(__is_void(Union))];
464 int t25[F(__is_void(UnionAr))];
465 int t26[F(__is_void(Derives))];
466 int t27[F(__is_void(ClassType))];
467 int t28[F(__is_void(Enum))];
468 int t29[F(__is_void(IntArNB))];
469 int t30[F(__is_void(void*))];
470 int t31[F(__is_void(cvoid*))];
471 }
472
is_array()473 void is_array()
474 {
475 int t01[T(__is_array(IntAr))];
476 int t02[T(__is_array(IntArNB))];
477 int t03[T(__is_array(UnionAr))];
478
479 int t10[F(__is_array(void))];
480 int t11[F(__is_array(cvoid))];
481 int t12[F(__is_array(float))];
482 int t13[F(__is_array(double))];
483 int t14[F(__is_array(long double))];
484 int t15[F(__is_array(bool))];
485 int t16[F(__is_array(char))];
486 int t17[F(__is_array(signed char))];
487 int t18[F(__is_array(unsigned char))];
488 int t19[F(__is_array(wchar_t))];
489 int t20[F(__is_array(short))];
490 int t21[F(__is_array(unsigned short))];
491 int t22[F(__is_array(int))];
492 int t23[F(__is_array(unsigned int))];
493 int t24[F(__is_array(long))];
494 int t25[F(__is_array(unsigned long))];
495 int t26[F(__is_array(Union))];
496 int t27[F(__is_array(Derives))];
497 int t28[F(__is_array(ClassType))];
498 int t29[F(__is_array(Enum))];
499 int t30[F(__is_array(void*))];
500 int t31[F(__is_array(cvoid*))];
501 }
502
tmpl_func(T &)503 template <typename T> void tmpl_func(T&) {}
504
505 template <typename T> struct type_wrapper {
506 typedef T type;
507 typedef T* ptrtype;
508 typedef T& reftype;
509 };
510
is_function()511 void is_function()
512 {
513 int t01[T(__is_function(type_wrapper<void(void)>::type))];
514 int t02[T(__is_function(typeof(tmpl_func<int>)))];
515
516 typedef void (*ptr_to_func_type)(void);
517
518 int t10[F(__is_function(void))];
519 int t11[F(__is_function(cvoid))];
520 int t12[F(__is_function(float))];
521 int t13[F(__is_function(double))];
522 int t14[F(__is_function(long double))];
523 int t15[F(__is_function(bool))];
524 int t16[F(__is_function(char))];
525 int t17[F(__is_function(signed char))];
526 int t18[F(__is_function(unsigned char))];
527 int t19[F(__is_function(wchar_t))];
528 int t20[F(__is_function(short))];
529 int t21[F(__is_function(unsigned short))];
530 int t22[F(__is_function(int))];
531 int t23[F(__is_function(unsigned int))];
532 int t24[F(__is_function(long))];
533 int t25[F(__is_function(unsigned long))];
534 int t26[F(__is_function(Union))];
535 int t27[F(__is_function(Derives))];
536 int t28[F(__is_function(ClassType))];
537 int t29[F(__is_function(Enum))];
538 int t30[F(__is_function(void*))];
539 int t31[F(__is_function(cvoid*))];
540 int t32[F(__is_function(void(*)()))];
541 int t33[F(__is_function(ptr_to_func_type))];
542 int t34[F(__is_function(type_wrapper<void(void)>::ptrtype))];
543 int t35[F(__is_function(type_wrapper<void(void)>::reftype))];
544 }
545
is_reference()546 void is_reference()
547 {
548 int t01[T(__is_reference(int&))];
549 int t02[T(__is_reference(const int&))];
550 int t03[T(__is_reference(void *&))];
551
552 int t10[F(__is_reference(int))];
553 int t11[F(__is_reference(const int))];
554 int t12[F(__is_reference(void *))];
555 }
556
is_lvalue_reference()557 void is_lvalue_reference()
558 {
559 int t01[T(__is_lvalue_reference(int&))];
560 int t02[T(__is_lvalue_reference(void *&))];
561 int t03[T(__is_lvalue_reference(const int&))];
562 int t04[T(__is_lvalue_reference(void * const &))];
563
564 int t10[F(__is_lvalue_reference(int))];
565 int t11[F(__is_lvalue_reference(const int))];
566 int t12[F(__is_lvalue_reference(void *))];
567 }
568
569 #if __has_feature(cxx_rvalue_references)
570
is_rvalue_reference()571 void is_rvalue_reference()
572 {
573 int t01[T(__is_rvalue_reference(const int&&))];
574 int t02[T(__is_rvalue_reference(void * const &&))];
575
576 int t10[F(__is_rvalue_reference(int&))];
577 int t11[F(__is_rvalue_reference(void *&))];
578 int t12[F(__is_rvalue_reference(const int&))];
579 int t13[F(__is_rvalue_reference(void * const &))];
580 int t14[F(__is_rvalue_reference(int))];
581 int t15[F(__is_rvalue_reference(const int))];
582 int t16[F(__is_rvalue_reference(void *))];
583 }
584
585 #endif
586
is_fundamental()587 void is_fundamental()
588 {
589 int t01[T(__is_fundamental(float))];
590 int t02[T(__is_fundamental(double))];
591 int t03[T(__is_fundamental(long double))];
592 int t11[T(__is_fundamental(bool))];
593 int t12[T(__is_fundamental(char))];
594 int t13[T(__is_fundamental(signed char))];
595 int t14[T(__is_fundamental(unsigned char))];
596 //int t15[T(__is_fundamental(char16_t))];
597 //int t16[T(__is_fundamental(char32_t))];
598 int t17[T(__is_fundamental(wchar_t))];
599 int t18[T(__is_fundamental(short))];
600 int t19[T(__is_fundamental(unsigned short))];
601 int t20[T(__is_fundamental(int))];
602 int t21[T(__is_fundamental(unsigned int))];
603 int t22[T(__is_fundamental(long))];
604 int t23[T(__is_fundamental(unsigned long))];
605 int t24[T(__is_fundamental(void))];
606 int t25[T(__is_fundamental(cvoid))];
607
608 int t30[F(__is_fundamental(Union))];
609 int t31[F(__is_fundamental(UnionAr))];
610 int t32[F(__is_fundamental(Derives))];
611 int t33[F(__is_fundamental(ClassType))];
612 int t34[F(__is_fundamental(Enum))];
613 int t35[F(__is_fundamental(IntArNB))];
614 }
615
is_object()616 void is_object()
617 {
618 int t01[T(__is_object(int))];
619 int t02[T(__is_object(int *))];
620 int t03[T(__is_object(void *))];
621 int t04[T(__is_object(Union))];
622 int t05[T(__is_object(UnionAr))];
623 int t06[T(__is_object(ClassType))];
624 int t07[T(__is_object(Enum))];
625
626 int t10[F(__is_object(type_wrapper<void(void)>::type))];
627 int t11[F(__is_object(int&))];
628 int t12[F(__is_object(void))];
629 }
630
is_scalar()631 void is_scalar()
632 {
633 int t01[T(__is_scalar(float))];
634 int t02[T(__is_scalar(double))];
635 int t03[T(__is_scalar(long double))];
636 int t04[T(__is_scalar(bool))];
637 int t05[T(__is_scalar(char))];
638 int t06[T(__is_scalar(signed char))];
639 int t07[T(__is_scalar(unsigned char))];
640 int t08[T(__is_scalar(wchar_t))];
641 int t09[T(__is_scalar(short))];
642 int t10[T(__is_scalar(unsigned short))];
643 int t11[T(__is_scalar(int))];
644 int t12[T(__is_scalar(unsigned int))];
645 int t13[T(__is_scalar(long))];
646 int t14[T(__is_scalar(unsigned long))];
647 int t15[T(__is_scalar(Enum))];
648 int t16[T(__is_scalar(void*))];
649 int t17[T(__is_scalar(cvoid*))];
650
651 int t20[F(__is_scalar(void))];
652 int t21[F(__is_scalar(cvoid))];
653 int t22[F(__is_scalar(Union))];
654 int t23[F(__is_scalar(UnionAr))];
655 int t24[F(__is_scalar(Derives))];
656 int t25[F(__is_scalar(ClassType))];
657 int t26[F(__is_scalar(IntArNB))];
658 }
659
660 struct StructWithMembers {
661 int member;
methodStructWithMembers662 void method() {}
663 };
664
is_compound()665 void is_compound()
666 {
667 int t01[T(__is_compound(void*))];
668 int t02[T(__is_compound(cvoid*))];
669 int t03[T(__is_compound(void (*)()))];
670 int t04[T(__is_compound(int StructWithMembers::*))];
671 int t05[T(__is_compound(void (StructWithMembers::*)()))];
672 int t06[T(__is_compound(int&))];
673 int t07[T(__is_compound(Union))];
674 int t08[T(__is_compound(UnionAr))];
675 int t09[T(__is_compound(Derives))];
676 int t10[T(__is_compound(ClassType))];
677 int t11[T(__is_compound(IntArNB))];
678 int t12[T(__is_compound(Enum))];
679
680 int t20[F(__is_compound(float))];
681 int t21[F(__is_compound(double))];
682 int t22[F(__is_compound(long double))];
683 int t23[F(__is_compound(bool))];
684 int t24[F(__is_compound(char))];
685 int t25[F(__is_compound(signed char))];
686 int t26[F(__is_compound(unsigned char))];
687 int t27[F(__is_compound(wchar_t))];
688 int t28[F(__is_compound(short))];
689 int t29[F(__is_compound(unsigned short))];
690 int t30[F(__is_compound(int))];
691 int t31[F(__is_compound(unsigned int))];
692 int t32[F(__is_compound(long))];
693 int t33[F(__is_compound(unsigned long))];
694 int t34[F(__is_compound(void))];
695 int t35[F(__is_compound(cvoid))];
696 }
697
is_pointer()698 void is_pointer()
699 {
700 StructWithMembers x;
701
702 int t01[T(__is_pointer(void*))];
703 int t02[T(__is_pointer(cvoid*))];
704 int t03[T(__is_pointer(cvoid*))];
705 int t04[T(__is_pointer(char*))];
706 int t05[T(__is_pointer(int*))];
707 int t06[T(__is_pointer(int**))];
708 int t07[T(__is_pointer(ClassType*))];
709 int t08[T(__is_pointer(Derives*))];
710 int t09[T(__is_pointer(Enum*))];
711 int t10[T(__is_pointer(IntArNB*))];
712 int t11[T(__is_pointer(Union*))];
713 int t12[T(__is_pointer(UnionAr*))];
714 int t13[T(__is_pointer(StructWithMembers*))];
715 int t14[T(__is_pointer(void (*)()))];
716
717 int t20[F(__is_pointer(void))];
718 int t21[F(__is_pointer(cvoid))];
719 int t22[F(__is_pointer(cvoid))];
720 int t23[F(__is_pointer(char))];
721 int t24[F(__is_pointer(int))];
722 int t25[F(__is_pointer(int))];
723 int t26[F(__is_pointer(ClassType))];
724 int t27[F(__is_pointer(Derives))];
725 int t28[F(__is_pointer(Enum))];
726 int t29[F(__is_pointer(IntArNB))];
727 int t30[F(__is_pointer(Union))];
728 int t31[F(__is_pointer(UnionAr))];
729 int t32[F(__is_pointer(StructWithMembers))];
730 int t33[F(__is_pointer(int StructWithMembers::*))];
731 int t34[F(__is_pointer(void (StructWithMembers::*) ()))];
732 }
733
is_member_object_pointer()734 void is_member_object_pointer()
735 {
736 StructWithMembers x;
737
738 int t01[T(__is_member_object_pointer(int StructWithMembers::*))];
739
740 int t10[F(__is_member_object_pointer(void (StructWithMembers::*) ()))];
741 int t11[F(__is_member_object_pointer(void*))];
742 int t12[F(__is_member_object_pointer(cvoid*))];
743 int t13[F(__is_member_object_pointer(cvoid*))];
744 int t14[F(__is_member_object_pointer(char*))];
745 int t15[F(__is_member_object_pointer(int*))];
746 int t16[F(__is_member_object_pointer(int**))];
747 int t17[F(__is_member_object_pointer(ClassType*))];
748 int t18[F(__is_member_object_pointer(Derives*))];
749 int t19[F(__is_member_object_pointer(Enum*))];
750 int t20[F(__is_member_object_pointer(IntArNB*))];
751 int t21[F(__is_member_object_pointer(Union*))];
752 int t22[F(__is_member_object_pointer(UnionAr*))];
753 int t23[F(__is_member_object_pointer(StructWithMembers*))];
754 int t24[F(__is_member_object_pointer(void))];
755 int t25[F(__is_member_object_pointer(cvoid))];
756 int t26[F(__is_member_object_pointer(cvoid))];
757 int t27[F(__is_member_object_pointer(char))];
758 int t28[F(__is_member_object_pointer(int))];
759 int t29[F(__is_member_object_pointer(int))];
760 int t30[F(__is_member_object_pointer(ClassType))];
761 int t31[F(__is_member_object_pointer(Derives))];
762 int t32[F(__is_member_object_pointer(Enum))];
763 int t33[F(__is_member_object_pointer(IntArNB))];
764 int t34[F(__is_member_object_pointer(Union))];
765 int t35[F(__is_member_object_pointer(UnionAr))];
766 int t36[F(__is_member_object_pointer(StructWithMembers))];
767 int t37[F(__is_member_object_pointer(void (*)()))];
768 }
769
is_member_function_pointer()770 void is_member_function_pointer()
771 {
772 StructWithMembers x;
773
774 int t01[T(__is_member_function_pointer(void (StructWithMembers::*) ()))];
775
776 int t10[F(__is_member_function_pointer(int StructWithMembers::*))];
777 int t11[F(__is_member_function_pointer(void*))];
778 int t12[F(__is_member_function_pointer(cvoid*))];
779 int t13[F(__is_member_function_pointer(cvoid*))];
780 int t14[F(__is_member_function_pointer(char*))];
781 int t15[F(__is_member_function_pointer(int*))];
782 int t16[F(__is_member_function_pointer(int**))];
783 int t17[F(__is_member_function_pointer(ClassType*))];
784 int t18[F(__is_member_function_pointer(Derives*))];
785 int t19[F(__is_member_function_pointer(Enum*))];
786 int t20[F(__is_member_function_pointer(IntArNB*))];
787 int t21[F(__is_member_function_pointer(Union*))];
788 int t22[F(__is_member_function_pointer(UnionAr*))];
789 int t23[F(__is_member_function_pointer(StructWithMembers*))];
790 int t24[F(__is_member_function_pointer(void))];
791 int t25[F(__is_member_function_pointer(cvoid))];
792 int t26[F(__is_member_function_pointer(cvoid))];
793 int t27[F(__is_member_function_pointer(char))];
794 int t28[F(__is_member_function_pointer(int))];
795 int t29[F(__is_member_function_pointer(int))];
796 int t30[F(__is_member_function_pointer(ClassType))];
797 int t31[F(__is_member_function_pointer(Derives))];
798 int t32[F(__is_member_function_pointer(Enum))];
799 int t33[F(__is_member_function_pointer(IntArNB))];
800 int t34[F(__is_member_function_pointer(Union))];
801 int t35[F(__is_member_function_pointer(UnionAr))];
802 int t36[F(__is_member_function_pointer(StructWithMembers))];
803 int t37[F(__is_member_function_pointer(void (*)()))];
804 }
805
is_member_pointer()806 void is_member_pointer()
807 {
808 StructWithMembers x;
809
810 int t01[T(__is_member_pointer(int StructWithMembers::*))];
811 int t02[T(__is_member_pointer(void (StructWithMembers::*) ()))];
812
813 int t10[F(__is_member_pointer(void*))];
814 int t11[F(__is_member_pointer(cvoid*))];
815 int t12[F(__is_member_pointer(cvoid*))];
816 int t13[F(__is_member_pointer(char*))];
817 int t14[F(__is_member_pointer(int*))];
818 int t15[F(__is_member_pointer(int**))];
819 int t16[F(__is_member_pointer(ClassType*))];
820 int t17[F(__is_member_pointer(Derives*))];
821 int t18[F(__is_member_pointer(Enum*))];
822 int t19[F(__is_member_pointer(IntArNB*))];
823 int t20[F(__is_member_pointer(Union*))];
824 int t21[F(__is_member_pointer(UnionAr*))];
825 int t22[F(__is_member_pointer(StructWithMembers*))];
826 int t23[F(__is_member_pointer(void))];
827 int t24[F(__is_member_pointer(cvoid))];
828 int t25[F(__is_member_pointer(cvoid))];
829 int t26[F(__is_member_pointer(char))];
830 int t27[F(__is_member_pointer(int))];
831 int t28[F(__is_member_pointer(int))];
832 int t29[F(__is_member_pointer(ClassType))];
833 int t30[F(__is_member_pointer(Derives))];
834 int t31[F(__is_member_pointer(Enum))];
835 int t32[F(__is_member_pointer(IntArNB))];
836 int t33[F(__is_member_pointer(Union))];
837 int t34[F(__is_member_pointer(UnionAr))];
838 int t35[F(__is_member_pointer(StructWithMembers))];
839 int t36[F(__is_member_pointer(void (*)()))];
840 }
841
is_const()842 void is_const()
843 {
844 int t01[T(__is_const(cvoid))];
845 int t02[T(__is_const(const char))];
846 int t03[T(__is_const(const int))];
847 int t04[T(__is_const(const long))];
848 int t05[T(__is_const(const short))];
849 int t06[T(__is_const(const signed char))];
850 int t07[T(__is_const(const wchar_t))];
851 int t08[T(__is_const(const bool))];
852 int t09[T(__is_const(const float))];
853 int t10[T(__is_const(const double))];
854 int t11[T(__is_const(const long double))];
855 int t12[T(__is_const(const unsigned char))];
856 int t13[T(__is_const(const unsigned int))];
857 int t14[T(__is_const(const unsigned long long))];
858 int t15[T(__is_const(const unsigned long))];
859 int t16[T(__is_const(const unsigned short))];
860 int t17[T(__is_const(const void))];
861 int t18[T(__is_const(const ClassType))];
862 int t19[T(__is_const(const Derives))];
863 int t20[T(__is_const(const Enum))];
864 int t21[T(__is_const(const IntArNB))];
865 int t22[T(__is_const(const Union))];
866 int t23[T(__is_const(const UnionAr))];
867
868 int t30[F(__is_const(char))];
869 int t31[F(__is_const(int))];
870 int t32[F(__is_const(long))];
871 int t33[F(__is_const(short))];
872 int t34[F(__is_const(signed char))];
873 int t35[F(__is_const(wchar_t))];
874 int t36[F(__is_const(bool))];
875 int t37[F(__is_const(float))];
876 int t38[F(__is_const(double))];
877 int t39[F(__is_const(long double))];
878 int t40[F(__is_const(unsigned char))];
879 int t41[F(__is_const(unsigned int))];
880 int t42[F(__is_const(unsigned long long))];
881 int t43[F(__is_const(unsigned long))];
882 int t44[F(__is_const(unsigned short))];
883 int t45[F(__is_const(void))];
884 int t46[F(__is_const(ClassType))];
885 int t47[F(__is_const(Derives))];
886 int t48[F(__is_const(Enum))];
887 int t49[F(__is_const(IntArNB))];
888 int t50[F(__is_const(Union))];
889 int t51[F(__is_const(UnionAr))];
890 }
891
is_volatile()892 void is_volatile()
893 {
894 int t02[T(__is_volatile(volatile char))];
895 int t03[T(__is_volatile(volatile int))];
896 int t04[T(__is_volatile(volatile long))];
897 int t05[T(__is_volatile(volatile short))];
898 int t06[T(__is_volatile(volatile signed char))];
899 int t07[T(__is_volatile(volatile wchar_t))];
900 int t08[T(__is_volatile(volatile bool))];
901 int t09[T(__is_volatile(volatile float))];
902 int t10[T(__is_volatile(volatile double))];
903 int t11[T(__is_volatile(volatile long double))];
904 int t12[T(__is_volatile(volatile unsigned char))];
905 int t13[T(__is_volatile(volatile unsigned int))];
906 int t14[T(__is_volatile(volatile unsigned long long))];
907 int t15[T(__is_volatile(volatile unsigned long))];
908 int t16[T(__is_volatile(volatile unsigned short))];
909 int t17[T(__is_volatile(volatile void))];
910 int t18[T(__is_volatile(volatile ClassType))];
911 int t19[T(__is_volatile(volatile Derives))];
912 int t20[T(__is_volatile(volatile Enum))];
913 int t21[T(__is_volatile(volatile IntArNB))];
914 int t22[T(__is_volatile(volatile Union))];
915 int t23[T(__is_volatile(volatile UnionAr))];
916
917 int t30[F(__is_volatile(char))];
918 int t31[F(__is_volatile(int))];
919 int t32[F(__is_volatile(long))];
920 int t33[F(__is_volatile(short))];
921 int t34[F(__is_volatile(signed char))];
922 int t35[F(__is_volatile(wchar_t))];
923 int t36[F(__is_volatile(bool))];
924 int t37[F(__is_volatile(float))];
925 int t38[F(__is_volatile(double))];
926 int t39[F(__is_volatile(long double))];
927 int t40[F(__is_volatile(unsigned char))];
928 int t41[F(__is_volatile(unsigned int))];
929 int t42[F(__is_volatile(unsigned long long))];
930 int t43[F(__is_volatile(unsigned long))];
931 int t44[F(__is_volatile(unsigned short))];
932 int t45[F(__is_volatile(void))];
933 int t46[F(__is_volatile(ClassType))];
934 int t47[F(__is_volatile(Derives))];
935 int t48[F(__is_volatile(Enum))];
936 int t49[F(__is_volatile(IntArNB))];
937 int t50[F(__is_volatile(Union))];
938 int t51[F(__is_volatile(UnionAr))];
939 }
940
941 struct TrivialStruct {
942 int member;
943 };
944
945 struct NonTrivialStruct {
946 int member;
NonTrivialStructNonTrivialStruct947 NonTrivialStruct() {
948 member = 0;
949 }
950 };
951
952 struct SuperNonTrivialStruct {
SuperNonTrivialStructSuperNonTrivialStruct953 SuperNonTrivialStruct() { }
~SuperNonTrivialStructSuperNonTrivialStruct954 ~SuperNonTrivialStruct() { }
955 };
956
957 struct NonTCStruct {
NonTCStructNonTCStruct958 NonTCStruct(const NonTCStruct&) {}
959 };
960
961 struct AllDefaulted {
962 AllDefaulted() = default;
963 AllDefaulted(const AllDefaulted &) = default;
964 AllDefaulted(AllDefaulted &&) = default;
965 AllDefaulted &operator=(const AllDefaulted &) = default;
966 AllDefaulted &operator=(AllDefaulted &&) = default;
967 ~AllDefaulted() = default;
968 };
969
970 struct NoDefaultMoveAssignDueToUDCopyCtor {
971 NoDefaultMoveAssignDueToUDCopyCtor(const NoDefaultMoveAssignDueToUDCopyCtor&);
972 };
973
974 struct NoDefaultMoveAssignDueToUDCopyAssign {
975 NoDefaultMoveAssignDueToUDCopyAssign& operator=(
976 const NoDefaultMoveAssignDueToUDCopyAssign&);
977 };
978
979 struct NoDefaultMoveAssignDueToDtor {
980 ~NoDefaultMoveAssignDueToDtor();
981 };
982
983 struct AllDeleted {
984 AllDeleted() = delete;
985 AllDeleted(const AllDeleted &) = delete;
986 AllDeleted(AllDeleted &&) = delete;
987 AllDeleted &operator=(const AllDeleted &) = delete;
988 AllDeleted &operator=(AllDeleted &&) = delete;
989 ~AllDeleted() = delete;
990 };
991
992 struct ExtDefaulted {
993 ExtDefaulted();
994 ExtDefaulted(const ExtDefaulted &);
995 ExtDefaulted(ExtDefaulted &&);
996 ExtDefaulted &operator=(const ExtDefaulted &);
997 ExtDefaulted &operator=(ExtDefaulted &&);
998 ~ExtDefaulted();
999 };
1000
1001 // Despite being defaulted, these functions are not trivial.
1002 ExtDefaulted::ExtDefaulted() = default;
1003 ExtDefaulted::ExtDefaulted(const ExtDefaulted &) = default;
1004 ExtDefaulted::ExtDefaulted(ExtDefaulted &&) = default;
1005 ExtDefaulted &ExtDefaulted::operator=(const ExtDefaulted &) = default;
1006 ExtDefaulted &ExtDefaulted::operator=(ExtDefaulted &&) = default;
1007 ExtDefaulted::~ExtDefaulted() = default;
1008
is_trivial2()1009 void is_trivial2()
1010 {
1011 int t01[T(__is_trivial(char))];
1012 int t02[T(__is_trivial(int))];
1013 int t03[T(__is_trivial(long))];
1014 int t04[T(__is_trivial(short))];
1015 int t05[T(__is_trivial(signed char))];
1016 int t06[T(__is_trivial(wchar_t))];
1017 int t07[T(__is_trivial(bool))];
1018 int t08[T(__is_trivial(float))];
1019 int t09[T(__is_trivial(double))];
1020 int t10[T(__is_trivial(long double))];
1021 int t11[T(__is_trivial(unsigned char))];
1022 int t12[T(__is_trivial(unsigned int))];
1023 int t13[T(__is_trivial(unsigned long long))];
1024 int t14[T(__is_trivial(unsigned long))];
1025 int t15[T(__is_trivial(unsigned short))];
1026 int t16[T(__is_trivial(ClassType))];
1027 int t17[T(__is_trivial(Derives))];
1028 int t18[T(__is_trivial(Enum))];
1029 int t19[T(__is_trivial(IntAr))];
1030 int t20[T(__is_trivial(Union))];
1031 int t21[T(__is_trivial(UnionAr))];
1032 int t22[T(__is_trivial(TrivialStruct))];
1033 int t23[T(__is_trivial(AllDefaulted))];
1034 int t24[T(__is_trivial(AllDeleted))];
1035
1036 int t30[F(__is_trivial(void))];
1037 int t31[F(__is_trivial(NonTrivialStruct))];
1038 int t32[F(__is_trivial(SuperNonTrivialStruct))];
1039 int t33[F(__is_trivial(NonTCStruct))];
1040 int t34[F(__is_trivial(ExtDefaulted))];
1041 }
1042
is_trivially_copyable2()1043 void is_trivially_copyable2()
1044 {
1045 int t01[T(__is_trivially_copyable(char))];
1046 int t02[T(__is_trivially_copyable(int))];
1047 int t03[T(__is_trivially_copyable(long))];
1048 int t04[T(__is_trivially_copyable(short))];
1049 int t05[T(__is_trivially_copyable(signed char))];
1050 int t06[T(__is_trivially_copyable(wchar_t))];
1051 int t07[T(__is_trivially_copyable(bool))];
1052 int t08[T(__is_trivially_copyable(float))];
1053 int t09[T(__is_trivially_copyable(double))];
1054 int t10[T(__is_trivially_copyable(long double))];
1055 int t11[T(__is_trivially_copyable(unsigned char))];
1056 int t12[T(__is_trivially_copyable(unsigned int))];
1057 int t13[T(__is_trivially_copyable(unsigned long long))];
1058 int t14[T(__is_trivially_copyable(unsigned long))];
1059 int t15[T(__is_trivially_copyable(unsigned short))];
1060 int t16[T(__is_trivially_copyable(ClassType))];
1061 int t17[T(__is_trivially_copyable(Derives))];
1062 int t18[T(__is_trivially_copyable(Enum))];
1063 int t19[T(__is_trivially_copyable(IntAr))];
1064 int t20[T(__is_trivially_copyable(Union))];
1065 int t21[T(__is_trivially_copyable(UnionAr))];
1066 int t22[T(__is_trivially_copyable(TrivialStruct))];
1067 int t23[T(__is_trivially_copyable(NonTrivialStruct))];
1068 int t24[T(__is_trivially_copyable(AllDefaulted))];
1069 int t25[T(__is_trivially_copyable(AllDeleted))];
1070
1071 int t30[F(__is_trivially_copyable(void))];
1072 int t31[F(__is_trivially_copyable(SuperNonTrivialStruct))];
1073 int t32[F(__is_trivially_copyable(NonTCStruct))];
1074 int t33[F(__is_trivially_copyable(ExtDefaulted))];
1075 }
1076
1077 struct CStruct {
1078 int one;
1079 int two;
1080 };
1081
1082 struct CEmptyStruct {};
1083
1084 struct CppEmptyStruct : CStruct {};
1085 struct CppStructStandard : CEmptyStruct {
1086 int three;
1087 int four;
1088 };
1089 struct CppStructNonStandardByBase : CStruct {
1090 int three;
1091 int four;
1092 };
1093 struct CppStructNonStandardByVirt : CStruct {
methodCppStructNonStandardByVirt1094 virtual void method() {}
1095 };
1096 struct CppStructNonStandardByMemb : CStruct {
1097 CppStructNonStandardByVirt member;
1098 };
1099 struct CppStructNonStandardByProt : CStruct {
1100 int five;
1101 protected:
1102 int six;
1103 };
1104 struct CppStructNonStandardByVirtBase : virtual CStruct {
1105 };
1106 struct CppStructNonStandardBySameBase : CEmptyStruct {
1107 CEmptyStruct member;
1108 };
1109 struct CppStructNonStandardBy2ndVirtBase : CEmptyStruct {
1110 CEmptyStruct member;
1111 };
1112
is_standard_layout()1113 void is_standard_layout()
1114 {
1115 typedef const int ConstInt;
1116 typedef ConstInt ConstIntAr[4];
1117 typedef CppStructStandard CppStructStandardAr[4];
1118
1119 int t01[T(__is_standard_layout(int))];
1120 int t02[T(__is_standard_layout(ConstInt))];
1121 int t03[T(__is_standard_layout(ConstIntAr))];
1122 int t04[T(__is_standard_layout(CStruct))];
1123 int t05[T(__is_standard_layout(CppStructStandard))];
1124 int t06[T(__is_standard_layout(CppStructStandardAr))];
1125 int t07[T(__is_standard_layout(Vector))];
1126 int t08[T(__is_standard_layout(VectorExt))];
1127
1128 typedef CppStructNonStandardByBase CppStructNonStandardByBaseAr[4];
1129
1130 int t10[F(__is_standard_layout(CppStructNonStandardByVirt))];
1131 int t11[F(__is_standard_layout(CppStructNonStandardByMemb))];
1132 int t12[F(__is_standard_layout(CppStructNonStandardByProt))];
1133 int t13[F(__is_standard_layout(CppStructNonStandardByVirtBase))];
1134 int t14[F(__is_standard_layout(CppStructNonStandardByBase))];
1135 int t15[F(__is_standard_layout(CppStructNonStandardByBaseAr))];
1136 int t16[F(__is_standard_layout(CppStructNonStandardBySameBase))];
1137 int t17[F(__is_standard_layout(CppStructNonStandardBy2ndVirtBase))];
1138 }
1139
is_signed()1140 void is_signed()
1141 {
1142 //int t01[T(__is_signed(char))];
1143 int t02[T(__is_signed(int))];
1144 int t03[T(__is_signed(long))];
1145 int t04[T(__is_signed(short))];
1146 int t05[T(__is_signed(signed char))];
1147 int t06[T(__is_signed(wchar_t))];
1148
1149 int t10[F(__is_signed(bool))];
1150 int t11[F(__is_signed(cvoid))];
1151 int t12[F(__is_signed(float))];
1152 int t13[F(__is_signed(double))];
1153 int t14[F(__is_signed(long double))];
1154 int t15[F(__is_signed(unsigned char))];
1155 int t16[F(__is_signed(unsigned int))];
1156 int t17[F(__is_signed(unsigned long long))];
1157 int t18[F(__is_signed(unsigned long))];
1158 int t19[F(__is_signed(unsigned short))];
1159 int t20[F(__is_signed(void))];
1160 int t21[F(__is_signed(ClassType))];
1161 int t22[F(__is_signed(Derives))];
1162 int t23[F(__is_signed(Enum))];
1163 int t24[F(__is_signed(IntArNB))];
1164 int t25[F(__is_signed(Union))];
1165 int t26[F(__is_signed(UnionAr))];
1166 }
1167
is_unsigned()1168 void is_unsigned()
1169 {
1170 int t01[T(__is_unsigned(bool))];
1171 int t02[T(__is_unsigned(unsigned char))];
1172 int t03[T(__is_unsigned(unsigned short))];
1173 int t04[T(__is_unsigned(unsigned int))];
1174 int t05[T(__is_unsigned(unsigned long))];
1175 int t06[T(__is_unsigned(unsigned long long))];
1176 int t07[T(__is_unsigned(Enum))];
1177
1178 int t10[F(__is_unsigned(void))];
1179 int t11[F(__is_unsigned(cvoid))];
1180 int t12[F(__is_unsigned(float))];
1181 int t13[F(__is_unsigned(double))];
1182 int t14[F(__is_unsigned(long double))];
1183 int t16[F(__is_unsigned(char))];
1184 int t17[F(__is_unsigned(signed char))];
1185 int t18[F(__is_unsigned(wchar_t))];
1186 int t19[F(__is_unsigned(short))];
1187 int t20[F(__is_unsigned(int))];
1188 int t21[F(__is_unsigned(long))];
1189 int t22[F(__is_unsigned(Union))];
1190 int t23[F(__is_unsigned(UnionAr))];
1191 int t24[F(__is_unsigned(Derives))];
1192 int t25[F(__is_unsigned(ClassType))];
1193 int t26[F(__is_unsigned(IntArNB))];
1194 }
1195
1196 typedef Int& IntRef;
1197 typedef const IntAr ConstIntAr;
1198 typedef ConstIntAr ConstIntArAr[4];
1199
1200 struct HasCopy {
1201 HasCopy(HasCopy& cp);
1202 };
1203
1204 struct HasMove {
1205 HasMove(HasMove&& cp);
1206 };
1207
1208 struct HasTemplateCons {
1209 HasVirt Annoying;
1210
1211 template <typename T>
1212 HasTemplateCons(const T&);
1213 };
1214
has_trivial_default_constructor()1215 void has_trivial_default_constructor() {
1216 { int arr[T(__has_trivial_constructor(Int))]; }
1217 { int arr[T(__has_trivial_constructor(IntAr))]; }
1218 { int arr[T(__has_trivial_constructor(Union))]; }
1219 { int arr[T(__has_trivial_constructor(UnionAr))]; }
1220 { int arr[T(__has_trivial_constructor(POD))]; }
1221 { int arr[T(__has_trivial_constructor(Derives))]; }
1222 { int arr[T(__has_trivial_constructor(DerivesAr))]; }
1223 { int arr[T(__has_trivial_constructor(ConstIntAr))]; }
1224 { int arr[T(__has_trivial_constructor(ConstIntArAr))]; }
1225 { int arr[T(__has_trivial_constructor(HasDest))]; }
1226 { int arr[T(__has_trivial_constructor(HasPriv))]; }
1227 { int arr[T(__has_trivial_constructor(HasCopyAssign))]; }
1228 { int arr[T(__has_trivial_constructor(HasMoveAssign))]; }
1229 { int arr[T(__has_trivial_constructor(const Int))]; }
1230 { int arr[T(__has_trivial_constructor(AllDefaulted))]; }
1231 { int arr[T(__has_trivial_constructor(AllDeleted))]; }
1232
1233 { int arr[F(__has_trivial_constructor(HasCons))]; }
1234 { int arr[F(__has_trivial_constructor(HasRef))]; }
1235 { int arr[F(__has_trivial_constructor(HasCopy))]; }
1236 { int arr[F(__has_trivial_constructor(IntRef))]; }
1237 { int arr[F(__has_trivial_constructor(VirtAr))]; }
1238 { int arr[F(__has_trivial_constructor(void))]; }
1239 { int arr[F(__has_trivial_constructor(cvoid))]; }
1240 { int arr[F(__has_trivial_constructor(HasTemplateCons))]; }
1241 { int arr[F(__has_trivial_constructor(AllPrivate))]; }
1242 { int arr[F(__has_trivial_constructor(ExtDefaulted))]; }
1243 }
1244
has_trivial_move_constructor()1245 void has_trivial_move_constructor() {
1246 // n3376 12.8 [class.copy]/12
1247 // A copy/move constructor for class X is trivial if it is not
1248 // user-provided, its declared parameter type is the same as
1249 // if it had been implicitly declared, and if
1250 // � class X has no virtual functions (10.3) and no virtual
1251 // base classes (10.1), and
1252 // � the constructor selected to copy/move each direct base
1253 // class subobject is trivial, and
1254 // � for each non-static data member of X that is of class
1255 // type (or array thereof), the constructor selected
1256 // to copy/move that member is trivial;
1257 // otherwise the copy/move constructor is non-trivial.
1258 { int arr[T(__has_trivial_move_constructor(POD))]; }
1259 { int arr[T(__has_trivial_move_constructor(Union))]; }
1260 { int arr[T(__has_trivial_move_constructor(HasCons))]; }
1261 { int arr[T(__has_trivial_move_constructor(HasStaticMemberMoveCtor))]; }
1262 { int arr[T(__has_trivial_move_constructor(AllDeleted))]; }
1263
1264 { int arr[F(__has_trivial_move_constructor(HasVirt))]; }
1265 { int arr[F(__has_trivial_move_constructor(DerivesVirt))]; }
1266 { int arr[F(__has_trivial_move_constructor(HasMoveCtor))]; }
1267 { int arr[F(__has_trivial_move_constructor(DerivesHasMoveCtor))]; }
1268 { int arr[F(__has_trivial_move_constructor(HasMemberMoveCtor))]; }
1269 }
1270
has_trivial_copy_constructor()1271 void has_trivial_copy_constructor() {
1272 { int arr[T(__has_trivial_copy(Int))]; }
1273 { int arr[T(__has_trivial_copy(IntAr))]; }
1274 { int arr[T(__has_trivial_copy(Union))]; }
1275 { int arr[T(__has_trivial_copy(UnionAr))]; }
1276 { int arr[T(__has_trivial_copy(POD))]; }
1277 { int arr[T(__has_trivial_copy(Derives))]; }
1278 { int arr[T(__has_trivial_copy(ConstIntAr))]; }
1279 { int arr[T(__has_trivial_copy(ConstIntArAr))]; }
1280 { int arr[T(__has_trivial_copy(HasDest))]; }
1281 { int arr[T(__has_trivial_copy(HasPriv))]; }
1282 { int arr[T(__has_trivial_copy(HasCons))]; }
1283 { int arr[T(__has_trivial_copy(HasRef))]; }
1284 { int arr[T(__has_trivial_copy(HasMove))]; }
1285 { int arr[T(__has_trivial_copy(IntRef))]; }
1286 { int arr[T(__has_trivial_copy(HasCopyAssign))]; }
1287 { int arr[T(__has_trivial_copy(HasMoveAssign))]; }
1288 { int arr[T(__has_trivial_copy(const Int))]; }
1289 { int arr[T(__has_trivial_copy(AllDefaulted))]; }
1290 { int arr[T(__has_trivial_copy(AllDeleted))]; }
1291 { int arr[T(__has_trivial_copy(DerivesAr))]; }
1292 { int arr[T(__has_trivial_copy(DerivesHasRef))]; }
1293
1294 { int arr[F(__has_trivial_copy(HasCopy))]; }
1295 { int arr[F(__has_trivial_copy(HasTemplateCons))]; }
1296 { int arr[F(__has_trivial_copy(VirtAr))]; }
1297 { int arr[F(__has_trivial_copy(void))]; }
1298 { int arr[F(__has_trivial_copy(cvoid))]; }
1299 { int arr[F(__has_trivial_copy(AllPrivate))]; }
1300 { int arr[F(__has_trivial_copy(ExtDefaulted))]; }
1301 }
1302
has_trivial_copy_assignment()1303 void has_trivial_copy_assignment() {
1304 { int arr[T(__has_trivial_assign(Int))]; }
1305 { int arr[T(__has_trivial_assign(IntAr))]; }
1306 { int arr[T(__has_trivial_assign(Union))]; }
1307 { int arr[T(__has_trivial_assign(UnionAr))]; }
1308 { int arr[T(__has_trivial_assign(POD))]; }
1309 { int arr[T(__has_trivial_assign(Derives))]; }
1310 { int arr[T(__has_trivial_assign(HasDest))]; }
1311 { int arr[T(__has_trivial_assign(HasPriv))]; }
1312 { int arr[T(__has_trivial_assign(HasCons))]; }
1313 { int arr[T(__has_trivial_assign(HasRef))]; }
1314 { int arr[T(__has_trivial_assign(HasCopy))]; }
1315 { int arr[T(__has_trivial_assign(HasMove))]; }
1316 { int arr[T(__has_trivial_assign(HasMoveAssign))]; }
1317 { int arr[T(__has_trivial_assign(AllDefaulted))]; }
1318 { int arr[T(__has_trivial_assign(AllDeleted))]; }
1319 { int arr[T(__has_trivial_assign(DerivesAr))]; }
1320 { int arr[T(__has_trivial_assign(DerivesHasRef))]; }
1321
1322 { int arr[F(__has_trivial_assign(IntRef))]; }
1323 { int arr[F(__has_trivial_assign(HasCopyAssign))]; }
1324 { int arr[F(__has_trivial_assign(const Int))]; }
1325 { int arr[F(__has_trivial_assign(ConstIntAr))]; }
1326 { int arr[F(__has_trivial_assign(ConstIntArAr))]; }
1327 { int arr[F(__has_trivial_assign(VirtAr))]; }
1328 { int arr[F(__has_trivial_assign(void))]; }
1329 { int arr[F(__has_trivial_assign(cvoid))]; }
1330 { int arr[F(__has_trivial_assign(AllPrivate))]; }
1331 { int arr[F(__has_trivial_assign(ExtDefaulted))]; }
1332 }
1333
has_trivial_destructor()1334 void has_trivial_destructor() {
1335 { int arr[T(__has_trivial_destructor(Int))]; }
1336 { int arr[T(__has_trivial_destructor(IntAr))]; }
1337 { int arr[T(__has_trivial_destructor(Union))]; }
1338 { int arr[T(__has_trivial_destructor(UnionAr))]; }
1339 { int arr[T(__has_trivial_destructor(POD))]; }
1340 { int arr[T(__has_trivial_destructor(Derives))]; }
1341 { int arr[T(__has_trivial_destructor(ConstIntAr))]; }
1342 { int arr[T(__has_trivial_destructor(ConstIntArAr))]; }
1343 { int arr[T(__has_trivial_destructor(HasPriv))]; }
1344 { int arr[T(__has_trivial_destructor(HasCons))]; }
1345 { int arr[T(__has_trivial_destructor(HasRef))]; }
1346 { int arr[T(__has_trivial_destructor(HasCopy))]; }
1347 { int arr[T(__has_trivial_destructor(HasMove))]; }
1348 { int arr[T(__has_trivial_destructor(IntRef))]; }
1349 { int arr[T(__has_trivial_destructor(HasCopyAssign))]; }
1350 { int arr[T(__has_trivial_destructor(HasMoveAssign))]; }
1351 { int arr[T(__has_trivial_destructor(const Int))]; }
1352 { int arr[T(__has_trivial_destructor(DerivesAr))]; }
1353 { int arr[T(__has_trivial_destructor(VirtAr))]; }
1354 { int arr[T(__has_trivial_destructor(AllDefaulted))]; }
1355 { int arr[T(__has_trivial_destructor(AllDeleted))]; }
1356 { int arr[T(__has_trivial_destructor(DerivesHasRef))]; }
1357
1358 { int arr[F(__has_trivial_destructor(HasDest))]; }
1359 { int arr[F(__has_trivial_destructor(void))]; }
1360 { int arr[F(__has_trivial_destructor(cvoid))]; }
1361 { int arr[F(__has_trivial_destructor(AllPrivate))]; }
1362 { int arr[F(__has_trivial_destructor(ExtDefaulted))]; }
1363 }
1364
~AA1365 struct A { ~A() {} };
1366 template<typename> struct B : A { };
1367
f()1368 void f() {
1369 { int arr[F(__has_trivial_destructor(A))]; }
1370 { int arr[F(__has_trivial_destructor(B<int>))]; }
1371 }
1372
1373 class PR11110 {
1374 template <int> int operator=( int );
1375 int operator=(PR11110);
1376 };
1377
1378 class UsingAssign;
1379
1380 class UsingAssignBase {
1381 protected:
1382 UsingAssign &operator=(const UsingAssign&) throw();
1383 };
1384
1385 class UsingAssign : public UsingAssignBase {
1386 public:
1387 using UsingAssignBase::operator=;
1388 };
1389
has_nothrow_assign()1390 void has_nothrow_assign() {
1391 { int arr[T(__has_nothrow_assign(Int))]; }
1392 { int arr[T(__has_nothrow_assign(IntAr))]; }
1393 { int arr[T(__has_nothrow_assign(Union))]; }
1394 { int arr[T(__has_nothrow_assign(UnionAr))]; }
1395 { int arr[T(__has_nothrow_assign(POD))]; }
1396 { int arr[T(__has_nothrow_assign(Derives))]; }
1397 { int arr[T(__has_nothrow_assign(HasDest))]; }
1398 { int arr[T(__has_nothrow_assign(HasPriv))]; }
1399 { int arr[T(__has_nothrow_assign(HasCons))]; }
1400 { int arr[T(__has_nothrow_assign(HasRef))]; }
1401 { int arr[T(__has_nothrow_assign(HasCopy))]; }
1402 { int arr[T(__has_nothrow_assign(HasMove))]; }
1403 { int arr[T(__has_nothrow_assign(HasMoveAssign))]; }
1404 { int arr[T(__has_nothrow_assign(HasNoThrowCopyAssign))]; }
1405 { int arr[T(__has_nothrow_assign(HasMultipleNoThrowCopyAssign))]; }
1406 { int arr[T(__has_nothrow_assign(HasVirtDest))]; }
1407 { int arr[T(__has_nothrow_assign(AllPrivate))]; }
1408 { int arr[T(__has_nothrow_assign(UsingAssign))]; }
1409 { int arr[T(__has_nothrow_assign(DerivesAr))]; }
1410
1411 { int arr[F(__has_nothrow_assign(IntRef))]; }
1412 { int arr[F(__has_nothrow_assign(HasCopyAssign))]; }
1413 { int arr[F(__has_nothrow_assign(HasMultipleCopyAssign))]; }
1414 { int arr[F(__has_nothrow_assign(const Int))]; }
1415 { int arr[F(__has_nothrow_assign(ConstIntAr))]; }
1416 { int arr[F(__has_nothrow_assign(ConstIntArAr))]; }
1417 { int arr[F(__has_nothrow_assign(VirtAr))]; }
1418 { int arr[F(__has_nothrow_assign(void))]; }
1419 { int arr[F(__has_nothrow_assign(cvoid))]; }
1420 { int arr[F(__has_nothrow_assign(PR11110))]; }
1421 }
1422
has_nothrow_move_assign()1423 void has_nothrow_move_assign() {
1424 { int arr[T(__has_nothrow_move_assign(Int))]; }
1425 { int arr[T(__has_nothrow_move_assign(Enum))]; }
1426 { int arr[T(__has_nothrow_move_assign(Int*))]; }
1427 { int arr[T(__has_nothrow_move_assign(Enum POD::*))]; }
1428 { int arr[T(__has_nothrow_move_assign(POD))]; }
1429 { int arr[T(__has_nothrow_move_assign(HasPriv))]; }
1430 { int arr[T(__has_nothrow_move_assign(HasNoThrowMoveAssign))]; }
1431 { int arr[T(__has_nothrow_move_assign(HasNoExceptNoThrowMoveAssign))]; }
1432 { int arr[T(__has_nothrow_move_assign(HasMemberNoThrowMoveAssign))]; }
1433 { int arr[T(__has_nothrow_move_assign(HasMemberNoExceptNoThrowMoveAssign))]; }
1434 { int arr[T(__has_nothrow_move_assign(AllDeleted))]; }
1435
1436
1437 { int arr[F(__has_nothrow_move_assign(HasThrowMoveAssign))]; }
1438 { int arr[F(__has_nothrow_move_assign(HasNoExceptFalseMoveAssign))]; }
1439 { int arr[F(__has_nothrow_move_assign(HasMemberThrowMoveAssign))]; }
1440 { int arr[F(__has_nothrow_move_assign(HasMemberNoExceptFalseMoveAssign))]; }
1441 { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToUDCopyCtor))]; }
1442 { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToUDCopyAssign))]; }
1443 { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToDtor))]; }
1444 }
1445
has_trivial_move_assign()1446 void has_trivial_move_assign() {
1447 // n3376 12.8 [class.copy]/25
1448 // A copy/move assignment operator for class X is trivial if it
1449 // is not user-provided, its declared parameter type is the same
1450 // as if it had been implicitly declared, and if:
1451 // � class X has no virtual functions (10.3) and no virtual base
1452 // classes (10.1), and
1453 // � the assignment operator selected to copy/move each direct
1454 // base class subobject is trivial, and
1455 // � for each non-static data member of X that is of class type
1456 // (or array thereof), the assignment operator
1457 // selected to copy/move that member is trivial;
1458 { int arr[T(__has_trivial_move_assign(Int))]; }
1459 { int arr[T(__has_trivial_move_assign(HasStaticMemberMoveAssign))]; }
1460 { int arr[T(__has_trivial_move_assign(AllDeleted))]; }
1461
1462 { int arr[F(__has_trivial_move_assign(HasVirt))]; }
1463 { int arr[F(__has_trivial_move_assign(DerivesVirt))]; }
1464 { int arr[F(__has_trivial_move_assign(HasMoveAssign))]; }
1465 { int arr[F(__has_trivial_move_assign(DerivesHasMoveAssign))]; }
1466 { int arr[F(__has_trivial_move_assign(HasMemberMoveAssign))]; }
1467 { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToUDCopyCtor))]; }
1468 { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToUDCopyAssign))]; }
1469 }
1470
has_nothrow_copy()1471 void has_nothrow_copy() {
1472 { int arr[T(__has_nothrow_copy(Int))]; }
1473 { int arr[T(__has_nothrow_copy(IntAr))]; }
1474 { int arr[T(__has_nothrow_copy(Union))]; }
1475 { int arr[T(__has_nothrow_copy(UnionAr))]; }
1476 { int arr[T(__has_nothrow_copy(POD))]; }
1477 { int arr[T(__has_nothrow_copy(const Int))]; }
1478 { int arr[T(__has_nothrow_copy(ConstIntAr))]; }
1479 { int arr[T(__has_nothrow_copy(ConstIntArAr))]; }
1480 { int arr[T(__has_nothrow_copy(Derives))]; }
1481 { int arr[T(__has_nothrow_copy(IntRef))]; }
1482 { int arr[T(__has_nothrow_copy(HasDest))]; }
1483 { int arr[T(__has_nothrow_copy(HasPriv))]; }
1484 { int arr[T(__has_nothrow_copy(HasCons))]; }
1485 { int arr[T(__has_nothrow_copy(HasRef))]; }
1486 { int arr[T(__has_nothrow_copy(HasMove))]; }
1487 { int arr[T(__has_nothrow_copy(HasCopyAssign))]; }
1488 { int arr[T(__has_nothrow_copy(HasMoveAssign))]; }
1489 { int arr[T(__has_nothrow_copy(HasNoThrowCopy))]; }
1490 { int arr[T(__has_nothrow_copy(HasMultipleNoThrowCopy))]; }
1491 { int arr[T(__has_nothrow_copy(HasVirtDest))]; }
1492 { int arr[T(__has_nothrow_copy(HasTemplateCons))]; }
1493 { int arr[T(__has_nothrow_copy(AllPrivate))]; }
1494 { int arr[T(__has_nothrow_copy(DerivesAr))]; }
1495
1496 { int arr[F(__has_nothrow_copy(HasCopy))]; }
1497 { int arr[F(__has_nothrow_copy(HasMultipleCopy))]; }
1498 { int arr[F(__has_nothrow_copy(VirtAr))]; }
1499 { int arr[F(__has_nothrow_copy(void))]; }
1500 { int arr[F(__has_nothrow_copy(cvoid))]; }
1501 }
1502
has_nothrow_constructor()1503 void has_nothrow_constructor() {
1504 { int arr[T(__has_nothrow_constructor(Int))]; }
1505 { int arr[T(__has_nothrow_constructor(IntAr))]; }
1506 { int arr[T(__has_nothrow_constructor(Union))]; }
1507 { int arr[T(__has_nothrow_constructor(UnionAr))]; }
1508 { int arr[T(__has_nothrow_constructor(POD))]; }
1509 { int arr[T(__has_nothrow_constructor(Derives))]; }
1510 { int arr[T(__has_nothrow_constructor(DerivesAr))]; }
1511 { int arr[T(__has_nothrow_constructor(ConstIntAr))]; }
1512 { int arr[T(__has_nothrow_constructor(ConstIntArAr))]; }
1513 { int arr[T(__has_nothrow_constructor(HasDest))]; }
1514 { int arr[T(__has_nothrow_constructor(HasPriv))]; }
1515 { int arr[T(__has_nothrow_constructor(HasCopyAssign))]; }
1516 { int arr[T(__has_nothrow_constructor(const Int))]; }
1517 { int arr[T(__has_nothrow_constructor(HasNoThrowConstructor))]; }
1518 { int arr[T(__has_nothrow_constructor(HasVirtDest))]; }
1519 // { int arr[T(__has_nothrow_constructor(VirtAr))]; } // not implemented
1520 { int arr[T(__has_nothrow_constructor(AllPrivate))]; }
1521
1522 { int arr[F(__has_nothrow_constructor(HasCons))]; }
1523 { int arr[F(__has_nothrow_constructor(HasRef))]; }
1524 { int arr[F(__has_nothrow_constructor(HasCopy))]; }
1525 { int arr[F(__has_nothrow_constructor(HasMove))]; }
1526 { int arr[F(__has_nothrow_constructor(HasNoThrowConstructorWithArgs))]; }
1527 { int arr[F(__has_nothrow_constructor(IntRef))]; }
1528 { int arr[F(__has_nothrow_constructor(void))]; }
1529 { int arr[F(__has_nothrow_constructor(cvoid))]; }
1530 { int arr[F(__has_nothrow_constructor(HasTemplateCons))]; }
1531 }
1532
has_virtual_destructor()1533 void has_virtual_destructor() {
1534 { int arr[F(__has_virtual_destructor(Int))]; }
1535 { int arr[F(__has_virtual_destructor(IntAr))]; }
1536 { int arr[F(__has_virtual_destructor(Union))]; }
1537 { int arr[F(__has_virtual_destructor(UnionAr))]; }
1538 { int arr[F(__has_virtual_destructor(POD))]; }
1539 { int arr[F(__has_virtual_destructor(Derives))]; }
1540 { int arr[F(__has_virtual_destructor(DerivesAr))]; }
1541 { int arr[F(__has_virtual_destructor(const Int))]; }
1542 { int arr[F(__has_virtual_destructor(ConstIntAr))]; }
1543 { int arr[F(__has_virtual_destructor(ConstIntArAr))]; }
1544 { int arr[F(__has_virtual_destructor(HasDest))]; }
1545 { int arr[F(__has_virtual_destructor(HasPriv))]; }
1546 { int arr[F(__has_virtual_destructor(HasCons))]; }
1547 { int arr[F(__has_virtual_destructor(HasRef))]; }
1548 { int arr[F(__has_virtual_destructor(HasCopy))]; }
1549 { int arr[F(__has_virtual_destructor(HasMove))]; }
1550 { int arr[F(__has_virtual_destructor(HasCopyAssign))]; }
1551 { int arr[F(__has_virtual_destructor(HasMoveAssign))]; }
1552 { int arr[F(__has_virtual_destructor(IntRef))]; }
1553 { int arr[F(__has_virtual_destructor(VirtAr))]; }
1554
1555 { int arr[T(__has_virtual_destructor(HasVirtDest))]; }
1556 { int arr[T(__has_virtual_destructor(DerivedVirtDest))]; }
1557 { int arr[F(__has_virtual_destructor(VirtDestAr))]; }
1558 { int arr[F(__has_virtual_destructor(void))]; }
1559 { int arr[F(__has_virtual_destructor(cvoid))]; }
1560 { int arr[F(__has_virtual_destructor(AllPrivate))]; }
1561 }
1562
1563
1564 class Base {};
1565 class Derived : Base {};
1566 class Derived2a : Derived {};
1567 class Derived2b : Derived {};
1568 class Derived3 : virtual Derived2a, virtual Derived2b {};
1569 template<typename T> struct BaseA { T a; };
1570 template<typename T> struct DerivedB : BaseA<T> { };
1571 template<typename T> struct CrazyDerived : T { };
1572
1573
1574 class class_forward; // expected-note {{forward declaration of 'class_forward'}}
1575
1576 template <typename Base, typename Derived>
isBaseOfT()1577 void isBaseOfT() {
1578 int t[T(__is_base_of(Base, Derived))];
1579 };
1580 template <typename Base, typename Derived>
isBaseOfF()1581 void isBaseOfF() {
1582 int t[F(__is_base_of(Base, Derived))];
1583 };
1584
1585 template <class T> class DerivedTemp : Base {};
1586 template <class T> class NonderivedTemp {};
1587 template <class T> class UndefinedTemp; // expected-note {{declared here}}
1588
is_base_of()1589 void is_base_of() {
1590 { int arr[T(__is_base_of(Base, Derived))]; }
1591 { int arr[T(__is_base_of(const Base, Derived))]; }
1592 { int arr[F(__is_base_of(Derived, Base))]; }
1593 { int arr[F(__is_base_of(Derived, int))]; }
1594 { int arr[T(__is_base_of(Base, Base))]; }
1595 { int arr[T(__is_base_of(Base, Derived3))]; }
1596 { int arr[T(__is_base_of(Derived, Derived3))]; }
1597 { int arr[T(__is_base_of(Derived2b, Derived3))]; }
1598 { int arr[T(__is_base_of(Derived2a, Derived3))]; }
1599 { int arr[T(__is_base_of(BaseA<int>, DerivedB<int>))]; }
1600 { int arr[F(__is_base_of(DerivedB<int>, BaseA<int>))]; }
1601 { int arr[T(__is_base_of(Base, CrazyDerived<Base>))]; }
1602 { int arr[F(__is_base_of(Union, Union))]; }
1603 { int arr[T(__is_base_of(Empty, Empty))]; }
1604 { int arr[T(__is_base_of(class_forward, class_forward))]; }
1605 { int arr[F(__is_base_of(Empty, class_forward))]; } // expected-error {{incomplete type 'class_forward' used in type trait expression}}
1606 { int arr[F(__is_base_of(Base&, Derived&))]; }
1607 int t18[F(__is_base_of(Base[10], Derived[10]))];
1608 { int arr[F(__is_base_of(int, int))]; }
1609 { int arr[F(__is_base_of(long, int))]; }
1610 { int arr[T(__is_base_of(Base, DerivedTemp<int>))]; }
1611 { int arr[F(__is_base_of(Base, NonderivedTemp<int>))]; }
1612 { int arr[F(__is_base_of(Base, UndefinedTemp<int>))]; } // expected-error {{implicit instantiation of undefined template 'UndefinedTemp<int>'}}
1613
1614 isBaseOfT<Base, Derived>();
1615 isBaseOfF<Derived, Base>();
1616
1617 isBaseOfT<Base, CrazyDerived<Base> >();
1618 isBaseOfF<CrazyDerived<Base>, Base>();
1619
1620 isBaseOfT<BaseA<int>, DerivedB<int> >();
1621 isBaseOfF<DerivedB<int>, BaseA<int> >();
1622 }
1623
1624 template<class T, class U>
1625 class TemplateClass {};
1626
1627 template<class T>
1628 using TemplateAlias = TemplateClass<T, int>;
1629
1630 typedef class Base BaseTypedef;
1631
is_same()1632 void is_same()
1633 {
1634 int t01[T(__is_same(Base, Base))];
1635 int t02[T(__is_same(Base, BaseTypedef))];
1636 int t03[T(__is_same(TemplateClass<int, int>, TemplateAlias<int>))];
1637
1638 int t10[F(__is_same(Base, const Base))];
1639 int t11[F(__is_same(Base, Base&))];
1640 int t12[F(__is_same(Base, Derived))];
1641 }
1642
1643 struct IntWrapper
1644 {
1645 int value;
IntWrapperIntWrapper1646 IntWrapper(int _value) : value(_value) {}
operator intIntWrapper1647 operator int() const {
1648 return value;
1649 }
1650 };
1651
1652 struct FloatWrapper
1653 {
1654 float value;
FloatWrapperFloatWrapper1655 FloatWrapper(float _value) : value(_value) {}
FloatWrapperFloatWrapper1656 FloatWrapper(const IntWrapper& obj)
1657 : value(static_cast<float>(obj.value)) {}
operator floatFloatWrapper1658 operator float() const {
1659 return value;
1660 }
operator IntWrapperFloatWrapper1661 operator IntWrapper() const {
1662 return IntWrapper(static_cast<int>(value));
1663 }
1664 };
1665
is_convertible()1666 void is_convertible()
1667 {
1668 int t01[T(__is_convertible(IntWrapper, IntWrapper))];
1669 int t02[T(__is_convertible(IntWrapper, const IntWrapper))];
1670 int t03[T(__is_convertible(IntWrapper, int))];
1671 int t04[T(__is_convertible(int, IntWrapper))];
1672 int t05[T(__is_convertible(IntWrapper, FloatWrapper))];
1673 int t06[T(__is_convertible(FloatWrapper, IntWrapper))];
1674 int t07[T(__is_convertible(FloatWrapper, float))];
1675 int t08[T(__is_convertible(float, FloatWrapper))];
1676 }
1677
1678 struct FromInt { FromInt(int); };
1679 struct ToInt { operator int(); };
1680 typedef void Function();
1681
1682 void is_convertible_to();
1683 class PrivateCopy {
1684 PrivateCopy(const PrivateCopy&);
1685 friend void is_convertible_to();
1686 };
1687
1688 template<typename T>
1689 struct X0 {
1690 template<typename U> X0(const X0<U>&);
1691 };
1692
1693 struct Abstract { virtual void f() = 0; };
1694
is_convertible_to()1695 void is_convertible_to() {
1696 { int arr[T(__is_convertible_to(Int, Int))]; }
1697 { int arr[F(__is_convertible_to(Int, IntAr))]; }
1698 { int arr[F(__is_convertible_to(IntAr, IntAr))]; }
1699 { int arr[T(__is_convertible_to(void, void))]; }
1700 { int arr[T(__is_convertible_to(cvoid, void))]; }
1701 { int arr[T(__is_convertible_to(void, cvoid))]; }
1702 { int arr[T(__is_convertible_to(cvoid, cvoid))]; }
1703 { int arr[T(__is_convertible_to(int, FromInt))]; }
1704 { int arr[T(__is_convertible_to(long, FromInt))]; }
1705 { int arr[T(__is_convertible_to(double, FromInt))]; }
1706 { int arr[T(__is_convertible_to(const int, FromInt))]; }
1707 { int arr[T(__is_convertible_to(const int&, FromInt))]; }
1708 { int arr[T(__is_convertible_to(ToInt, int))]; }
1709 { int arr[T(__is_convertible_to(ToInt, const int&))]; }
1710 { int arr[T(__is_convertible_to(ToInt, long))]; }
1711 { int arr[F(__is_convertible_to(ToInt, int&))]; }
1712 { int arr[F(__is_convertible_to(ToInt, FromInt))]; }
1713 { int arr[T(__is_convertible_to(IntAr&, IntAr&))]; }
1714 { int arr[T(__is_convertible_to(IntAr&, const IntAr&))]; }
1715 { int arr[F(__is_convertible_to(const IntAr&, IntAr&))]; }
1716 { int arr[F(__is_convertible_to(Function, Function))]; }
1717 { int arr[F(__is_convertible_to(PrivateCopy, PrivateCopy))]; }
1718 { int arr[T(__is_convertible_to(X0<int>, X0<float>))]; }
1719 { int arr[F(__is_convertible_to(Abstract, Abstract))]; }
1720 }
1721
1722 namespace is_convertible_to_instantiate {
1723 // Make sure we don't try to instantiate the constructor.
A(int)1724 template<int x> class A { A(int) { int a[x]; } };
1725 int x = __is_convertible_to(int, A<-1>);
1726 }
1727
is_trivial()1728 void is_trivial()
1729 {
1730 { int arr[T(__is_trivial(int))]; }
1731 { int arr[T(__is_trivial(Enum))]; }
1732 { int arr[T(__is_trivial(POD))]; }
1733 { int arr[T(__is_trivial(Int))]; }
1734 { int arr[T(__is_trivial(IntAr))]; }
1735 { int arr[T(__is_trivial(IntArNB))]; }
1736 { int arr[T(__is_trivial(Statics))]; }
1737 { int arr[T(__is_trivial(Empty))]; }
1738 { int arr[T(__is_trivial(EmptyUnion))]; }
1739 { int arr[T(__is_trivial(Union))]; }
1740 { int arr[T(__is_trivial(Derives))]; }
1741 { int arr[T(__is_trivial(DerivesAr))]; }
1742 { int arr[T(__is_trivial(DerivesArNB))]; }
1743 { int arr[T(__is_trivial(DerivesEmpty))]; }
1744 { int arr[T(__is_trivial(HasFunc))]; }
1745 { int arr[T(__is_trivial(HasOp))]; }
1746 { int arr[T(__is_trivial(HasConv))]; }
1747 { int arr[T(__is_trivial(HasAssign))]; }
1748 { int arr[T(__is_trivial(HasAnonymousUnion))]; }
1749 { int arr[T(__is_trivial(HasPriv))]; }
1750 { int arr[T(__is_trivial(HasProt))]; }
1751 { int arr[T(__is_trivial(DerivesHasPriv))]; }
1752 { int arr[T(__is_trivial(DerivesHasProt))]; }
1753 { int arr[T(__is_trivial(Vector))]; }
1754 { int arr[T(__is_trivial(VectorExt))]; }
1755
1756 { int arr[F(__is_trivial(HasCons))]; }
1757 { int arr[F(__is_trivial(HasCopyAssign))]; }
1758 { int arr[F(__is_trivial(HasMoveAssign))]; }
1759 { int arr[F(__is_trivial(HasDest))]; }
1760 { int arr[F(__is_trivial(HasRef))]; }
1761 { int arr[F(__is_trivial(HasNonPOD))]; }
1762 { int arr[F(__is_trivial(HasVirt))]; }
1763 { int arr[F(__is_trivial(DerivesHasCons))]; }
1764 { int arr[F(__is_trivial(DerivesHasCopyAssign))]; }
1765 { int arr[F(__is_trivial(DerivesHasMoveAssign))]; }
1766 { int arr[F(__is_trivial(DerivesHasDest))]; }
1767 { int arr[F(__is_trivial(DerivesHasRef))]; }
1768 { int arr[F(__is_trivial(DerivesHasVirt))]; }
1769 { int arr[F(__is_trivial(void))]; }
1770 { int arr[F(__is_trivial(cvoid))]; }
1771 }
1772
trivial_checks()1773 void trivial_checks()
1774 {
1775 { int arr[T(__is_trivially_copyable(int))]; }
1776 { int arr[T(__is_trivially_copyable(Enum))]; }
1777 { int arr[T(__is_trivially_copyable(POD))]; }
1778 { int arr[T(__is_trivially_copyable(Int))]; }
1779 { int arr[T(__is_trivially_copyable(IntAr))]; }
1780 { int arr[T(__is_trivially_copyable(IntArNB))]; }
1781 { int arr[T(__is_trivially_copyable(Statics))]; }
1782 { int arr[T(__is_trivially_copyable(Empty))]; }
1783 { int arr[T(__is_trivially_copyable(EmptyUnion))]; }
1784 { int arr[T(__is_trivially_copyable(Union))]; }
1785 { int arr[T(__is_trivially_copyable(Derives))]; }
1786 { int arr[T(__is_trivially_copyable(DerivesAr))]; }
1787 { int arr[T(__is_trivially_copyable(DerivesArNB))]; }
1788 { int arr[T(__is_trivially_copyable(DerivesEmpty))]; }
1789 { int arr[T(__is_trivially_copyable(HasFunc))]; }
1790 { int arr[T(__is_trivially_copyable(HasOp))]; }
1791 { int arr[T(__is_trivially_copyable(HasConv))]; }
1792 { int arr[T(__is_trivially_copyable(HasAssign))]; }
1793 { int arr[T(__is_trivially_copyable(HasAnonymousUnion))]; }
1794 { int arr[T(__is_trivially_copyable(HasPriv))]; }
1795 { int arr[T(__is_trivially_copyable(HasProt))]; }
1796 { int arr[T(__is_trivially_copyable(DerivesHasPriv))]; }
1797 { int arr[T(__is_trivially_copyable(DerivesHasProt))]; }
1798 { int arr[T(__is_trivially_copyable(Vector))]; }
1799 { int arr[T(__is_trivially_copyable(VectorExt))]; }
1800 { int arr[T(__is_trivially_copyable(HasCons))]; }
1801 { int arr[T(__is_trivially_copyable(HasRef))]; }
1802 { int arr[T(__is_trivially_copyable(HasNonPOD))]; }
1803 { int arr[T(__is_trivially_copyable(DerivesHasCons))]; }
1804 { int arr[T(__is_trivially_copyable(DerivesHasRef))]; }
1805
1806 { int arr[F(__is_trivially_copyable(HasCopyAssign))]; }
1807 { int arr[F(__is_trivially_copyable(HasMoveAssign))]; }
1808 { int arr[F(__is_trivially_copyable(HasDest))]; }
1809 { int arr[F(__is_trivially_copyable(HasVirt))]; }
1810 { int arr[F(__is_trivially_copyable(DerivesHasCopyAssign))]; }
1811 { int arr[F(__is_trivially_copyable(DerivesHasMoveAssign))]; }
1812 { int arr[F(__is_trivially_copyable(DerivesHasDest))]; }
1813 { int arr[F(__is_trivially_copyable(DerivesHasVirt))]; }
1814 { int arr[F(__is_trivially_copyable(void))]; }
1815 { int arr[F(__is_trivially_copyable(cvoid))]; }
1816
1817 { int arr[T((__is_trivially_constructible(int)))]; }
1818 { int arr[T((__is_trivially_constructible(int, int)))]; }
1819 { int arr[T((__is_trivially_constructible(int, float)))]; }
1820 { int arr[T((__is_trivially_constructible(int, int&)))]; }
1821 { int arr[T((__is_trivially_constructible(int, const int&)))]; }
1822 { int arr[T((__is_trivially_constructible(int, int)))]; }
1823 { int arr[T((__is_trivially_constructible(HasCopyAssign, HasCopyAssign)))]; }
1824 { int arr[T((__is_trivially_constructible(HasCopyAssign, const HasCopyAssign&)))]; }
1825 { int arr[T((__is_trivially_constructible(HasCopyAssign, HasCopyAssign&&)))]; }
1826 { int arr[T((__is_trivially_constructible(HasCopyAssign)))]; }
1827 { int arr[T((__is_trivially_constructible(NonTrivialDefault,
1828 const NonTrivialDefault&)))]; }
1829 { int arr[T((__is_trivially_constructible(NonTrivialDefault,
1830 NonTrivialDefault&&)))]; }
1831 { int arr[T((__is_trivially_constructible(AllDefaulted)))]; }
1832 { int arr[T((__is_trivially_constructible(AllDefaulted,
1833 const AllDefaulted &)))]; }
1834 { int arr[T((__is_trivially_constructible(AllDefaulted,
1835 AllDefaulted &&)))]; }
1836
1837 { int arr[F((__is_trivially_constructible(int, int*)))]; }
1838 { int arr[F((__is_trivially_constructible(NonTrivialDefault)))]; }
1839 { int arr[F((__is_trivially_constructible(ThreeArgCtor, int*, char*, int&)))]; }
1840 { int arr[F((__is_trivially_constructible(AllDeleted)))]; }
1841 { int arr[F((__is_trivially_constructible(AllDeleted,
1842 const AllDeleted &)))]; }
1843 { int arr[F((__is_trivially_constructible(AllDeleted,
1844 AllDeleted &&)))]; }
1845 { int arr[F((__is_trivially_constructible(ExtDefaulted)))]; }
1846 { int arr[F((__is_trivially_constructible(ExtDefaulted,
1847 const ExtDefaulted &)))]; }
1848 { int arr[F((__is_trivially_constructible(ExtDefaulted,
1849 ExtDefaulted &&)))]; }
1850
1851 { int arr[T((__is_trivially_assignable(int&, int)))]; }
1852 { int arr[T((__is_trivially_assignable(int&, int&)))]; }
1853 { int arr[T((__is_trivially_assignable(int&, int&&)))]; }
1854 { int arr[T((__is_trivially_assignable(int&, const int&)))]; }
1855 { int arr[T((__is_trivially_assignable(POD&, POD)))]; }
1856 { int arr[T((__is_trivially_assignable(POD&, POD&)))]; }
1857 { int arr[T((__is_trivially_assignable(POD&, POD&&)))]; }
1858 { int arr[T((__is_trivially_assignable(POD&, const POD&)))]; }
1859 { int arr[T((__is_trivially_assignable(int*&, int*)))]; }
1860 { int arr[T((__is_trivially_assignable(AllDefaulted,
1861 const AllDefaulted &)))]; }
1862 { int arr[T((__is_trivially_assignable(AllDefaulted,
1863 AllDefaulted &&)))]; }
1864
1865 { int arr[F((__is_trivially_assignable(int*&, float*)))]; }
1866 { int arr[F((__is_trivially_assignable(HasCopyAssign&, HasCopyAssign)))]; }
1867 { int arr[F((__is_trivially_assignable(HasCopyAssign&, HasCopyAssign&)))]; }
1868 { int arr[F((__is_trivially_assignable(HasCopyAssign&, const HasCopyAssign&)))]; }
1869 { int arr[F((__is_trivially_assignable(HasCopyAssign&, HasCopyAssign&&)))]; }
1870 { int arr[F((__is_trivially_assignable(TrivialMoveButNotCopy&,
1871 TrivialMoveButNotCopy&)))]; }
1872 { int arr[F((__is_trivially_assignable(TrivialMoveButNotCopy&,
1873 const TrivialMoveButNotCopy&)))]; }
1874 { int arr[F((__is_trivially_assignable(AllDeleted,
1875 const AllDeleted &)))]; }
1876 { int arr[F((__is_trivially_assignable(AllDeleted,
1877 AllDeleted &&)))]; }
1878 { int arr[F((__is_trivially_assignable(ExtDefaulted,
1879 const ExtDefaulted &)))]; }
1880 { int arr[F((__is_trivially_assignable(ExtDefaulted,
1881 ExtDefaulted &&)))]; }
1882
1883 { int arr[T((__is_trivially_assignable(HasDefaultTrivialCopyAssign&,
1884 HasDefaultTrivialCopyAssign&)))]; }
1885 { int arr[T((__is_trivially_assignable(HasDefaultTrivialCopyAssign&,
1886 const HasDefaultTrivialCopyAssign&)))]; }
1887 { int arr[T((__is_trivially_assignable(TrivialMoveButNotCopy&,
1888 TrivialMoveButNotCopy)))]; }
1889 { int arr[T((__is_trivially_assignable(TrivialMoveButNotCopy&,
1890 TrivialMoveButNotCopy&&)))]; }
1891 }
1892
1893 // Instantiation of __is_trivially_constructible
1894 template<typename T, typename ...Args>
1895 struct is_trivially_constructible {
1896 static const bool value = __is_trivially_constructible(T, Args...);
1897 };
1898
is_trivially_constructible_test()1899 void is_trivially_constructible_test() {
1900 { int arr[T((is_trivially_constructible<int>::value))]; }
1901 { int arr[T((is_trivially_constructible<int, int>::value))]; }
1902 { int arr[T((is_trivially_constructible<int, float>::value))]; }
1903 { int arr[T((is_trivially_constructible<int, int&>::value))]; }
1904 { int arr[T((is_trivially_constructible<int, const int&>::value))]; }
1905 { int arr[T((is_trivially_constructible<int, int>::value))]; }
1906 { int arr[T((is_trivially_constructible<HasCopyAssign, HasCopyAssign>::value))]; }
1907 { int arr[T((is_trivially_constructible<HasCopyAssign, const HasCopyAssign&>::value))]; }
1908 { int arr[T((is_trivially_constructible<HasCopyAssign, HasCopyAssign&&>::value))]; }
1909 { int arr[T((is_trivially_constructible<HasCopyAssign>::value))]; }
1910 { int arr[T((is_trivially_constructible<NonTrivialDefault,
1911 const NonTrivialDefault&>::value))]; }
1912 { int arr[T((is_trivially_constructible<NonTrivialDefault,
1913 NonTrivialDefault&&>::value))]; }
1914
1915 { int arr[F((is_trivially_constructible<int, int*>::value))]; }
1916 { int arr[F((is_trivially_constructible<NonTrivialDefault>::value))]; }
1917 { int arr[F((is_trivially_constructible<ThreeArgCtor, int*, char*, int&>::value))]; }
1918 }
1919
array_rank()1920 void array_rank() {
1921 int t01[T(__array_rank(IntAr) == 1)];
1922 int t02[T(__array_rank(ConstIntArAr) == 2)];
1923 }
1924
array_extent()1925 void array_extent() {
1926 int t01[T(__array_extent(IntAr, 0) == 10)];
1927 int t02[T(__array_extent(ConstIntArAr, 0) == 4)];
1928 int t03[T(__array_extent(ConstIntArAr, 1) == 10)];
1929 }
1930