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