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