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