has_feature_cxx0x.cpp revision 4c9131ac2d0a65cb7c0179d438ae56f7978ab012
1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// RUN: %clang_cc1 -E -std=c++0x %s -o - | FileCheck --check-prefix=CHECK-0X %s 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-0X %s 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#if __has_feature(cxx_lambdas) 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnantint lambdas(); 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant#else 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint no_lambdas(); 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// CHECK-0X: no_lambdas 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// CHECK-NO-0X: no_lambdas 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#if __has_feature(cxx_nullptr) 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint has_nullptr(); 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#else 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint no_nullptr(); 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// CHECK-0X: no_nullptr 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// CHECK-NO-0X: no_nullptr 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#if __has_feature(cxx_concepts) 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint concepts(); 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#else 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint no_concepts(); 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// CHECK-0X: no_concepts 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// CHECK-NO-0X: no_concepts 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#if __has_feature(cxx_decltype) 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint has_decltype(); 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#else 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint no_decltype(); 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 39 40// CHECK-0X: has_decltype 41// CHECK-NO-0X: no_decltype 42 43 44#if __has_feature(cxx_auto_type) 45int auto_type(); 46#else 47int no_auto_type(); 48#endif 49 50// CHECK-0X: auto_type 51// CHECK-NO-0X: no_auto_type 52 53 54#if __has_feature(cxx_attributes) 55int attributes(); 56#else 57int no_attributes(); 58#endif 59 60// CHECK-0X: attributes 61// CHECK-NO-0X: no_attributes 62 63 64#if __has_feature(cxx_static_assert) 65int has_static_assert(); 66#else 67int no_static_assert(); 68#endif 69 70// CHECK-0X: has_static_assert 71// CHECK-NO-0X: no_static_assert 72 73// We accept this as an extension. 74#if __has_feature(cxx_deleted_functions) 75int deleted_functions(); 76#else 77int no_deleted_functions(); 78#endif 79 80// CHECK-0X: deleted_functions 81// CHECK-NO-0X: deleted_functions 82 83 84#if __has_feature(cxx_rvalue_references) 85int rvalue_references(); 86#else 87int no_rvalue_references(); 88#endif 89 90// CHECK-0X: no_rvalue_references 91// CHECK-NO-0X: no_rvalue_references 92 93 94#if __has_feature(cxx_variadic_templates) 95int variadic_templates(); 96#else 97int no_variadic_templates(); 98#endif 99 100// CHECK-0X: variadic_templates 101// Note: We allow variadic templates in C++98/03 with a warning. 102// CHECK-NO-0X: variadic_templates 103 104 105#if __has_feature(cxx_inline_namespaces) 106int inline_namespaces(); 107#else 108int no_inline_namespaces(); 109#endif 110 111// CHECK-0X: inline_namespaces 112// CHECK-NO-0X: inline_namespaces 113