has_feature_cxx0x.cpp revision a391a4642c5eb98aae606f2a2b7219b1a3619d11
10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// RUN: %clang_cc1 -E -std=c++0x %s -o - | FileCheck --check-prefix=CHECK-0X %s 22385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-0X %s 32385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 42385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#if __has_feature(cxx_lambdas) 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint has_lambdas(); 62385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#else 70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochint no_lambdas(); 80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif 92385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 102385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// CHECK-0X: no_lambdas 112385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// CHECK-NO-0X: no_lambdas 122385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if __has_feature(cxx_nullptr) 152385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochint has_nullptr(); 162385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#else 172385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochint no_nullptr(); 182385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#endif 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// CHECK-0X: no_nullptr 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// CHECK-NO-0X: no_nullptr 222385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 232385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 242385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#if __has_feature(cxx_decltype) 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)int has_decltype(); 262385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#else 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)int no_decltype(); 282385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#endif 292385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// CHECK-0X: has_decltype 312385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// CHECK-NO-0X: no_decltype 322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 342385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#if __has_feature(cxx_auto_type) 352385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochint has_auto_type(); 362385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#else 372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochint no_auto_type(); 382385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#endif 392385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// CHECK-0X: has_auto_type 412385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// CHECK-NO-0X: no_auto_type 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 442385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#if __has_feature(cxx_trailing_return) 452385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochint has_trailing_return(); 462385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#else 472385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochint no_trailing_return(); 482385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#endif 492385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 502385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// CHECK-0X: has_trailing_return 512385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// CHECK-NO-0X: no_trailing_return 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 542385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#if __has_feature(cxx_attributes) 552385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochint has_attributes(); 562385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#else 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)int no_attributes(); 583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// CHECK-0X: has_attributes 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// CHECK-NO-0X: no_attributes 622385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 632385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 642385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#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#if __has_feature(cxx_deleted_functions) 74int has_deleted_functions(); 75#else 76int no_deleted_functions(); 77#endif 78 79// CHECK-0X: has_deleted_functions 80// CHECK-NO-0X: no_deleted_functions 81 82 83#if __has_feature(cxx_rvalue_references) 84int has_rvalue_references(); 85#else 86int no_rvalue_references(); 87#endif 88 89// CHECK-0X: has_rvalue_references 90// CHECK-NO-0X: no_rvalue_references 91 92 93#if __has_feature(cxx_variadic_templates) 94int has_variadic_templates(); 95#else 96int no_variadic_templates(); 97#endif 98 99// CHECK-0X: has_variadic_templates 100// CHECK-NO-0X: no_variadic_templates 101 102 103#if __has_feature(cxx_inline_namespaces) 104int has_inline_namespaces(); 105#else 106int no_inline_namespaces(); 107#endif 108 109// CHECK-0X: has_inline_namespaces 110// CHECK-NO-0X: no_inline_namespaces 111 112 113#if __has_feature(cxx_range_for) 114int has_range_for(); 115#else 116int no_range_for(); 117#endif 118 119// CHECK-0X: has_range_for 120// CHECK-NO-0X: no_range_for 121 122 123#if __has_feature(cxx_reference_qualified_functions) 124int has_reference_qualified_functions(); 125#else 126int no_reference_qualified_functions(); 127#endif 128 129// CHECK-0X: has_reference_qualified_functions 130// CHECK-NO-0X: no_reference_qualified_functions 131 132#if __has_feature(cxx_default_function_template_args) 133int has_default_function_template_args(); 134#else 135int no_default_function_template_args(); 136#endif 137 138// CHECK-0X: has_default_function_template_args 139// CHECK-NO-0X: no_default_function_template_args 140 141#if __has_feature(cxx_noexcept) 142int has_noexcept(); 143#else 144int no_noexcept(); 145#endif 146 147// CHECK-0X: has_noexcept 148// CHECK-NO-0X: no_noexcept 149 150#if __has_feature(cxx_override_control) 151int has_override_control(); 152#else 153int no_override_control(); 154#endif 155 156// CHECK-0X: has_override_control 157// CHECK-NO-0X: no_override_control 158