xref: /aosp_15_r20/external/clang/test/Lexer/has_feature_cxx0x.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-11 %s
2*67e74705SXin Li // RUN: %clang_cc1 -E -triple armv7-apple-darwin -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-NO-TLS %s
3*67e74705SXin Li // RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++98 %s -o - | FileCheck --check-prefix=CHECK-NO-11 %s
4*67e74705SXin Li // RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++14 %s -o - | FileCheck --check-prefix=CHECK-14 %s
5*67e74705SXin Li // RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++1z %s -o - | FileCheck --check-prefix=CHECK-1Z %s
6*67e74705SXin Li 
7*67e74705SXin Li #if __has_feature(cxx_atomic)
8*67e74705SXin Li int has_atomic();
9*67e74705SXin Li #else
10*67e74705SXin Li int no_atomic();
11*67e74705SXin Li #endif
12*67e74705SXin Li 
13*67e74705SXin Li // CHECK-1Z: has_atomic
14*67e74705SXin Li // CHECK-14: has_atomic
15*67e74705SXin Li // CHECK-11: has_atomic
16*67e74705SXin Li // CHECK-NO-11: no_atomic
17*67e74705SXin Li 
18*67e74705SXin Li #if __has_feature(cxx_lambdas)
19*67e74705SXin Li int has_lambdas();
20*67e74705SXin Li #else
21*67e74705SXin Li int no_lambdas();
22*67e74705SXin Li #endif
23*67e74705SXin Li 
24*67e74705SXin Li // CHECK-1Z: has_lambdas
25*67e74705SXin Li // CHECK-14: has_lambdas
26*67e74705SXin Li // CHECK-11: has_lambdas
27*67e74705SXin Li // CHECK-NO-11: no_lambdas
28*67e74705SXin Li 
29*67e74705SXin Li 
30*67e74705SXin Li #if __has_feature(cxx_nullptr)
31*67e74705SXin Li int has_nullptr();
32*67e74705SXin Li #else
33*67e74705SXin Li int no_nullptr();
34*67e74705SXin Li #endif
35*67e74705SXin Li 
36*67e74705SXin Li // CHECK-1Z: has_nullptr
37*67e74705SXin Li // CHECK-14: has_nullptr
38*67e74705SXin Li // CHECK-11: has_nullptr
39*67e74705SXin Li // CHECK-NO-11: no_nullptr
40*67e74705SXin Li 
41*67e74705SXin Li 
42*67e74705SXin Li #if __has_feature(cxx_decltype)
43*67e74705SXin Li int has_decltype();
44*67e74705SXin Li #else
45*67e74705SXin Li int no_decltype();
46*67e74705SXin Li #endif
47*67e74705SXin Li 
48*67e74705SXin Li // CHECK-1Z: has_decltype
49*67e74705SXin Li // CHECK-14: has_decltype
50*67e74705SXin Li // CHECK-11: has_decltype
51*67e74705SXin Li // CHECK-NO-11: no_decltype
52*67e74705SXin Li 
53*67e74705SXin Li 
54*67e74705SXin Li #if __has_feature(cxx_decltype_incomplete_return_types)
55*67e74705SXin Li int has_decltype_incomplete_return_types();
56*67e74705SXin Li #else
57*67e74705SXin Li int no_decltype_incomplete_return_types();
58*67e74705SXin Li #endif
59*67e74705SXin Li 
60*67e74705SXin Li // CHECK-1Z: has_decltype_incomplete_return_types
61*67e74705SXin Li // CHECK-14: has_decltype_incomplete_return_types
62*67e74705SXin Li // CHECK-11: has_decltype_incomplete_return_types
63*67e74705SXin Li // CHECK-NO-11: no_decltype_incomplete_return_types
64*67e74705SXin Li 
65*67e74705SXin Li 
66*67e74705SXin Li #if __has_feature(cxx_auto_type)
67*67e74705SXin Li int has_auto_type();
68*67e74705SXin Li #else
69*67e74705SXin Li int no_auto_type();
70*67e74705SXin Li #endif
71*67e74705SXin Li 
72*67e74705SXin Li // CHECK-1Z: has_auto_type
73*67e74705SXin Li // CHECK-14: has_auto_type
74*67e74705SXin Li // CHECK-11: has_auto_type
75*67e74705SXin Li // CHECK-NO-11: no_auto_type
76*67e74705SXin Li 
77*67e74705SXin Li 
78*67e74705SXin Li #if __has_feature(cxx_trailing_return)
79*67e74705SXin Li int has_trailing_return();
80*67e74705SXin Li #else
81*67e74705SXin Li int no_trailing_return();
82*67e74705SXin Li #endif
83*67e74705SXin Li 
84*67e74705SXin Li // CHECK-1Z: has_trailing_return
85*67e74705SXin Li // CHECK-14: has_trailing_return
86*67e74705SXin Li // CHECK-11: has_trailing_return
87*67e74705SXin Li // CHECK-NO-11: no_trailing_return
88*67e74705SXin Li 
89*67e74705SXin Li 
90*67e74705SXin Li #if __has_feature(cxx_attributes)
91*67e74705SXin Li int has_attributes();
92*67e74705SXin Li #else
93*67e74705SXin Li int no_attributes();
94*67e74705SXin Li #endif
95*67e74705SXin Li 
96*67e74705SXin Li // CHECK-1Z: has_attributes
97*67e74705SXin Li // CHECK-14: has_attributes
98*67e74705SXin Li // CHECK-11: has_attributes
99*67e74705SXin Li // CHECK-NO-11: no_attributes
100*67e74705SXin Li 
101*67e74705SXin Li 
102*67e74705SXin Li #if __has_feature(cxx_static_assert)
103*67e74705SXin Li int has_static_assert();
104*67e74705SXin Li #else
105*67e74705SXin Li int no_static_assert();
106*67e74705SXin Li #endif
107*67e74705SXin Li 
108*67e74705SXin Li // CHECK-1Z: has_static_assert
109*67e74705SXin Li // CHECK-14: has_static_assert
110*67e74705SXin Li // CHECK-11: has_static_assert
111*67e74705SXin Li // CHECK-NO-11: no_static_assert
112*67e74705SXin Li 
113*67e74705SXin Li #if __has_feature(cxx_deleted_functions)
114*67e74705SXin Li int has_deleted_functions();
115*67e74705SXin Li #else
116*67e74705SXin Li int no_deleted_functions();
117*67e74705SXin Li #endif
118*67e74705SXin Li 
119*67e74705SXin Li // CHECK-1Z: has_deleted_functions
120*67e74705SXin Li // CHECK-14: has_deleted_functions
121*67e74705SXin Li // CHECK-11: has_deleted_functions
122*67e74705SXin Li // CHECK-NO-11: no_deleted_functions
123*67e74705SXin Li 
124*67e74705SXin Li #if __has_feature(cxx_defaulted_functions)
125*67e74705SXin Li int has_defaulted_functions();
126*67e74705SXin Li #else
127*67e74705SXin Li int no_defaulted_functions();
128*67e74705SXin Li #endif
129*67e74705SXin Li 
130*67e74705SXin Li // CHECK-1Z: has_defaulted_functions
131*67e74705SXin Li // CHECK-14: has_defaulted_functions
132*67e74705SXin Li // CHECK-11: has_defaulted_functions
133*67e74705SXin Li // CHECK-NO-11: no_defaulted_functions
134*67e74705SXin Li 
135*67e74705SXin Li #if __has_feature(cxx_rvalue_references)
136*67e74705SXin Li int has_rvalue_references();
137*67e74705SXin Li #else
138*67e74705SXin Li int no_rvalue_references();
139*67e74705SXin Li #endif
140*67e74705SXin Li 
141*67e74705SXin Li // CHECK-1Z: has_rvalue_references
142*67e74705SXin Li // CHECK-14: has_rvalue_references
143*67e74705SXin Li // CHECK-11: has_rvalue_references
144*67e74705SXin Li // CHECK-NO-11: no_rvalue_references
145*67e74705SXin Li 
146*67e74705SXin Li 
147*67e74705SXin Li #if __has_feature(cxx_variadic_templates)
148*67e74705SXin Li int has_variadic_templates();
149*67e74705SXin Li #else
150*67e74705SXin Li int no_variadic_templates();
151*67e74705SXin Li #endif
152*67e74705SXin Li 
153*67e74705SXin Li // CHECK-1Z: has_variadic_templates
154*67e74705SXin Li // CHECK-14: has_variadic_templates
155*67e74705SXin Li // CHECK-11: has_variadic_templates
156*67e74705SXin Li // CHECK-NO-11: no_variadic_templates
157*67e74705SXin Li 
158*67e74705SXin Li 
159*67e74705SXin Li #if __has_feature(cxx_inline_namespaces)
160*67e74705SXin Li int has_inline_namespaces();
161*67e74705SXin Li #else
162*67e74705SXin Li int no_inline_namespaces();
163*67e74705SXin Li #endif
164*67e74705SXin Li 
165*67e74705SXin Li // CHECK-1Z: has_inline_namespaces
166*67e74705SXin Li // CHECK-14: has_inline_namespaces
167*67e74705SXin Li // CHECK-11: has_inline_namespaces
168*67e74705SXin Li // CHECK-NO-11: no_inline_namespaces
169*67e74705SXin Li 
170*67e74705SXin Li 
171*67e74705SXin Li #if __has_feature(cxx_range_for)
172*67e74705SXin Li int has_range_for();
173*67e74705SXin Li #else
174*67e74705SXin Li int no_range_for();
175*67e74705SXin Li #endif
176*67e74705SXin Li 
177*67e74705SXin Li // CHECK-1Z: has_range_for
178*67e74705SXin Li // CHECK-14: has_range_for
179*67e74705SXin Li // CHECK-11: has_range_for
180*67e74705SXin Li // CHECK-NO-11: no_range_for
181*67e74705SXin Li 
182*67e74705SXin Li 
183*67e74705SXin Li #if __has_feature(cxx_reference_qualified_functions)
184*67e74705SXin Li int has_reference_qualified_functions();
185*67e74705SXin Li #else
186*67e74705SXin Li int no_reference_qualified_functions();
187*67e74705SXin Li #endif
188*67e74705SXin Li 
189*67e74705SXin Li // CHECK-1Z: has_reference_qualified_functions
190*67e74705SXin Li // CHECK-14: has_reference_qualified_functions
191*67e74705SXin Li // CHECK-11: has_reference_qualified_functions
192*67e74705SXin Li // CHECK-NO-11: no_reference_qualified_functions
193*67e74705SXin Li 
194*67e74705SXin Li #if __has_feature(cxx_default_function_template_args)
195*67e74705SXin Li int has_default_function_template_args();
196*67e74705SXin Li #else
197*67e74705SXin Li int no_default_function_template_args();
198*67e74705SXin Li #endif
199*67e74705SXin Li 
200*67e74705SXin Li // CHECK-1Z: has_default_function_template_args
201*67e74705SXin Li // CHECK-14: has_default_function_template_args
202*67e74705SXin Li // CHECK-11: has_default_function_template_args
203*67e74705SXin Li // CHECK-NO-11: no_default_function_template_args
204*67e74705SXin Li 
205*67e74705SXin Li #if __has_feature(cxx_noexcept)
206*67e74705SXin Li int has_noexcept();
207*67e74705SXin Li #else
208*67e74705SXin Li int no_noexcept();
209*67e74705SXin Li #endif
210*67e74705SXin Li 
211*67e74705SXin Li // CHECK-1Z: has_noexcept
212*67e74705SXin Li // CHECK-14: has_noexcept
213*67e74705SXin Li // CHECK-11: has_noexcept
214*67e74705SXin Li // CHECK-NO-11: no_noexcept
215*67e74705SXin Li 
216*67e74705SXin Li #if __has_feature(cxx_override_control)
217*67e74705SXin Li int has_override_control();
218*67e74705SXin Li #else
219*67e74705SXin Li int no_override_control();
220*67e74705SXin Li #endif
221*67e74705SXin Li 
222*67e74705SXin Li // CHECK-1Z: has_override_control
223*67e74705SXin Li // CHECK-14: has_override_control
224*67e74705SXin Li // CHECK-11: has_override_control
225*67e74705SXin Li // CHECK-NO-11: no_override_control
226*67e74705SXin Li 
227*67e74705SXin Li #if __has_feature(cxx_alias_templates)
228*67e74705SXin Li int has_alias_templates();
229*67e74705SXin Li #else
230*67e74705SXin Li int no_alias_templates();
231*67e74705SXin Li #endif
232*67e74705SXin Li 
233*67e74705SXin Li // CHECK-1Z: has_alias_templates
234*67e74705SXin Li // CHECK-14: has_alias_templates
235*67e74705SXin Li // CHECK-11: has_alias_templates
236*67e74705SXin Li // CHECK-NO-11: no_alias_templates
237*67e74705SXin Li 
238*67e74705SXin Li #if __has_feature(cxx_implicit_moves)
239*67e74705SXin Li int has_implicit_moves();
240*67e74705SXin Li #else
241*67e74705SXin Li int no_implicit_moves();
242*67e74705SXin Li #endif
243*67e74705SXin Li 
244*67e74705SXin Li // CHECK-1Z: has_implicit_moves
245*67e74705SXin Li // CHECK-14: has_implicit_moves
246*67e74705SXin Li // CHECK-11: has_implicit_moves
247*67e74705SXin Li // CHECK-NO-11: no_implicit_moves
248*67e74705SXin Li 
249*67e74705SXin Li #if __has_feature(cxx_alignas)
250*67e74705SXin Li int has_alignas();
251*67e74705SXin Li #else
252*67e74705SXin Li int no_alignas();
253*67e74705SXin Li #endif
254*67e74705SXin Li 
255*67e74705SXin Li // CHECK-1Z: has_alignas
256*67e74705SXin Li // CHECK-14: has_alignas
257*67e74705SXin Li // CHECK-11: has_alignas
258*67e74705SXin Li // CHECK-NO-11: no_alignas
259*67e74705SXin Li 
260*67e74705SXin Li #if __has_feature(cxx_alignof)
261*67e74705SXin Li int has_alignof();
262*67e74705SXin Li #else
263*67e74705SXin Li int no_alignof();
264*67e74705SXin Li #endif
265*67e74705SXin Li 
266*67e74705SXin Li // CHECK-1Z: has_alignof
267*67e74705SXin Li // CHECK-14: has_alignof
268*67e74705SXin Li // CHECK-11: has_alignof
269*67e74705SXin Li // CHECK-NO-11: no_alignof
270*67e74705SXin Li 
271*67e74705SXin Li #if __has_feature(cxx_raw_string_literals)
272*67e74705SXin Li int has_raw_string_literals();
273*67e74705SXin Li #else
274*67e74705SXin Li int no_raw_string_literals();
275*67e74705SXin Li #endif
276*67e74705SXin Li 
277*67e74705SXin Li // CHECK-1Z: has_raw_string_literals
278*67e74705SXin Li // CHECK-14: has_raw_string_literals
279*67e74705SXin Li // CHECK-11: has_raw_string_literals
280*67e74705SXin Li // CHECK-NO-11: no_raw_string_literals
281*67e74705SXin Li 
282*67e74705SXin Li #if __has_feature(cxx_unicode_literals)
283*67e74705SXin Li int has_unicode_literals();
284*67e74705SXin Li #else
285*67e74705SXin Li int no_unicode_literals();
286*67e74705SXin Li #endif
287*67e74705SXin Li 
288*67e74705SXin Li // CHECK-1Z: has_unicode_literals
289*67e74705SXin Li // CHECK-14: has_unicode_literals
290*67e74705SXin Li // CHECK-11: has_unicode_literals
291*67e74705SXin Li // CHECK-NO-11: no_unicode_literals
292*67e74705SXin Li 
293*67e74705SXin Li #if __has_feature(cxx_constexpr)
294*67e74705SXin Li int has_constexpr();
295*67e74705SXin Li #else
296*67e74705SXin Li int no_constexpr();
297*67e74705SXin Li #endif
298*67e74705SXin Li 
299*67e74705SXin Li // CHECK-1Z: has_constexpr
300*67e74705SXin Li // CHECK-14: has_constexpr
301*67e74705SXin Li // CHECK-11: has_constexpr
302*67e74705SXin Li // CHECK-NO-11: no_constexpr
303*67e74705SXin Li 
304*67e74705SXin Li #if __has_feature(cxx_generalized_initializers)
305*67e74705SXin Li int has_generalized_initializers();
306*67e74705SXin Li #else
307*67e74705SXin Li int no_generalized_initializers();
308*67e74705SXin Li #endif
309*67e74705SXin Li 
310*67e74705SXin Li // CHECK-1Z: has_generalized_initializers
311*67e74705SXin Li // CHECK-14: has_generalized_initializers
312*67e74705SXin Li // CHECK-11: has_generalized_initializers
313*67e74705SXin Li // CHECK-NO-11: no_generalized_initializers
314*67e74705SXin Li 
315*67e74705SXin Li #if __has_feature(cxx_unrestricted_unions)
316*67e74705SXin Li int has_unrestricted_unions();
317*67e74705SXin Li #else
318*67e74705SXin Li int no_unrestricted_unions();
319*67e74705SXin Li #endif
320*67e74705SXin Li 
321*67e74705SXin Li // CHECK-1Z: has_unrestricted_unions
322*67e74705SXin Li // CHECK-14: has_unrestricted_unions
323*67e74705SXin Li // CHECK-11: has_unrestricted_unions
324*67e74705SXin Li // CHECK-NO-11: no_unrestricted_unions
325*67e74705SXin Li 
326*67e74705SXin Li #if __has_feature(cxx_user_literals)
327*67e74705SXin Li int has_user_literals();
328*67e74705SXin Li #else
329*67e74705SXin Li int no_user_literals();
330*67e74705SXin Li #endif
331*67e74705SXin Li 
332*67e74705SXin Li // CHECK-1Z: has_user_literals
333*67e74705SXin Li // CHECK-14: has_user_literals
334*67e74705SXin Li // CHECK-11: has_user_literals
335*67e74705SXin Li // CHECK-NO-11: no_user_literals
336*67e74705SXin Li 
337*67e74705SXin Li #if __has_feature(cxx_local_type_template_args)
338*67e74705SXin Li int has_local_type_template_args();
339*67e74705SXin Li #else
340*67e74705SXin Li int no_local_type_template_args();
341*67e74705SXin Li #endif
342*67e74705SXin Li 
343*67e74705SXin Li // CHECK-1Z: has_local_type_template_args
344*67e74705SXin Li // CHECK-14: has_local_type_template_args
345*67e74705SXin Li // CHECK-11: has_local_type_template_args
346*67e74705SXin Li // CHECK-NO-11: no_local_type_template_args
347*67e74705SXin Li 
348*67e74705SXin Li #if __has_feature(cxx_inheriting_constructors)
349*67e74705SXin Li int has_inheriting_constructors();
350*67e74705SXin Li #else
351*67e74705SXin Li int no_inheriting_constructors();
352*67e74705SXin Li #endif
353*67e74705SXin Li 
354*67e74705SXin Li // CHECK-1Z: has_inheriting_constructors
355*67e74705SXin Li // CHECK-14: has_inheriting_constructors
356*67e74705SXin Li // CHECK-11: has_inheriting_constructors
357*67e74705SXin Li // CHECK-NO-11: no_inheriting_constructors
358*67e74705SXin Li 
359*67e74705SXin Li #if __has_feature(cxx_thread_local)
360*67e74705SXin Li int has_thread_local();
361*67e74705SXin Li #else
362*67e74705SXin Li int no_thread_local();
363*67e74705SXin Li #endif
364*67e74705SXin Li 
365*67e74705SXin Li // CHECK-1Z: has_thread_local
366*67e74705SXin Li // CHECK-14: has_thread_local
367*67e74705SXin Li // CHECK-11: has_thread_local
368*67e74705SXin Li // CHECK-NO-11: no_thread_local
369*67e74705SXin Li // CHECK-NO-TLS: no_thread_local
370*67e74705SXin Li 
371*67e74705SXin Li // === C++14 features ===
372*67e74705SXin Li 
373*67e74705SXin Li #if __has_feature(cxx_binary_literals)
374*67e74705SXin Li int has_binary_literals();
375*67e74705SXin Li #else
376*67e74705SXin Li int no_binary_literals();
377*67e74705SXin Li #endif
378*67e74705SXin Li 
379*67e74705SXin Li // CHECK-1Z: has_binary_literals
380*67e74705SXin Li // CHECK-14: has_binary_literals
381*67e74705SXin Li // CHECK-11: no_binary_literals
382*67e74705SXin Li // CHECK-NO-11: no_binary_literals
383*67e74705SXin Li 
384*67e74705SXin Li #if __has_feature(cxx_aggregate_nsdmi)
385*67e74705SXin Li int has_aggregate_nsdmi();
386*67e74705SXin Li #else
387*67e74705SXin Li int no_aggregate_nsdmi();
388*67e74705SXin Li #endif
389*67e74705SXin Li 
390*67e74705SXin Li // CHECK-1Z: has_aggregate_nsdmi
391*67e74705SXin Li // CHECK-14: has_aggregate_nsdmi
392*67e74705SXin Li // CHECK-11: no_aggregate_nsdmi
393*67e74705SXin Li // CHECK-NO-11: no_aggregate_nsdmi
394*67e74705SXin Li 
395*67e74705SXin Li #if __has_feature(cxx_return_type_deduction)
396*67e74705SXin Li int has_return_type_deduction();
397*67e74705SXin Li #else
398*67e74705SXin Li int no_return_type_deduction();
399*67e74705SXin Li #endif
400*67e74705SXin Li 
401*67e74705SXin Li // CHECK-1Z: has_return_type_deduction
402*67e74705SXin Li // CHECK-14: has_return_type_deduction
403*67e74705SXin Li // CHECK-11: no_return_type_deduction
404*67e74705SXin Li // CHECK-NO-11: no_return_type_deduction
405*67e74705SXin Li 
406*67e74705SXin Li #if __has_feature(cxx_contextual_conversions)
407*67e74705SXin Li int has_contextual_conversions();
408*67e74705SXin Li #else
409*67e74705SXin Li int no_contextual_conversions();
410*67e74705SXin Li #endif
411*67e74705SXin Li 
412*67e74705SXin Li // CHECK-1Z: has_contextual_conversions
413*67e74705SXin Li // CHECK-14: has_contextual_conversions
414*67e74705SXin Li // CHECK-11: no_contextual_conversions
415*67e74705SXin Li // CHECK-NO-11: no_contextual_conversions
416*67e74705SXin Li 
417*67e74705SXin Li #if __has_feature(cxx_relaxed_constexpr)
418*67e74705SXin Li int has_relaxed_constexpr();
419*67e74705SXin Li #else
420*67e74705SXin Li int no_relaxed_constexpr();
421*67e74705SXin Li #endif
422*67e74705SXin Li 
423*67e74705SXin Li // CHECK-1Z: has_relaxed_constexpr
424*67e74705SXin Li // CHECK-14: has_relaxed_constexpr
425*67e74705SXin Li // CHECK-11: no_relaxed_constexpr
426*67e74705SXin Li // CHECK-NO-11: no_relaxed_constexpr
427*67e74705SXin Li 
428*67e74705SXin Li #if __has_feature(cxx_variable_templates)
429*67e74705SXin Li int has_variable_templates();
430*67e74705SXin Li #else
431*67e74705SXin Li int no_variable_templates();
432*67e74705SXin Li #endif
433*67e74705SXin Li 
434*67e74705SXin Li // CHECK-1Z: has_variable_templates
435*67e74705SXin Li // CHECK-14: has_variable_templates
436*67e74705SXin Li // CHECK-11: no_variable_templates
437*67e74705SXin Li // CHECK-NO-11: no_variable_templates
438*67e74705SXin Li 
439*67e74705SXin Li #if __has_feature(cxx_init_captures)
440*67e74705SXin Li int has_init_captures();
441*67e74705SXin Li #else
442*67e74705SXin Li int no_init_captures();
443*67e74705SXin Li #endif
444*67e74705SXin Li 
445*67e74705SXin Li // CHECK-1Z: has_init_captures
446*67e74705SXin Li // CHECK-14: has_init_captures
447*67e74705SXin Li // CHECK-11: no_init_captures
448*67e74705SXin Li // CHECK-NO-11: no_init_captures
449*67e74705SXin Li 
450*67e74705SXin Li #if __has_feature(cxx_decltype_auto)
451*67e74705SXin Li int has_decltype_auto();
452*67e74705SXin Li #else
453*67e74705SXin Li int no_decltype_auto();
454*67e74705SXin Li #endif
455*67e74705SXin Li 
456*67e74705SXin Li // CHECK-1Z: has_decltype_auto
457*67e74705SXin Li // CHECK-14: has_decltype_auto
458*67e74705SXin Li // CHECK-11: no_decltype_auto
459*67e74705SXin Li // CHECK-NO-11: no_decltype_auto
460*67e74705SXin Li 
461*67e74705SXin Li #if __has_feature(cxx_generic_lambdas)
462*67e74705SXin Li int has_generic_lambdas();
463*67e74705SXin Li #else
464*67e74705SXin Li int no_generic_lambdas();
465*67e74705SXin Li #endif
466*67e74705SXin Li 
467*67e74705SXin Li // CHECK-1Z: has_generic_lambdas
468*67e74705SXin Li // CHECK-14: has_generic_lambdas
469*67e74705SXin Li // CHECK-11: no_generic_lambdas
470*67e74705SXin Li // CHECK-NO-11: no_generic_lambdas
471