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