1c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling// RUN: %clang_cc1 -std=c++98 -verify %s
2c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling// RUN: %clang_cc1 -std=c++11 -verify %s
33ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// RUN: %clang_cc1 -std=c++1y -fsized-deallocation -verify %s
4c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
5c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling// expected-no-diagnostics
6c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
7c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if __cplusplus < 201103L
8c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#define check(macro, cxx98, cxx11, cxx1y) cxx98 == 0 ? defined(__cpp_##macro) : __cpp_##macro != cxx98
9c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#elif __cplusplus < 201304L
10c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#define check(macro, cxx98, cxx11, cxx1y) cxx11 == 0 ? defined(__cpp_##macro) : __cpp_##macro != cxx11
11c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#else
12c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#define check(macro, cxx98, cxx11, cxx1y) cxx1y == 0 ? defined(__cpp_##macro) : __cpp_##macro != cxx1y
13c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
14c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
15c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(binary_literals, 0, 0, 201304)
16c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_binary_literals"
17c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
18c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
19176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if check(digit_separators, 0, 0, 201309)
20176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#error "wrong value for __cpp_digit_separators"
21176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
22176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
23c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(init_captures, 0, 0, 201304)
24c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_init_captures"
25c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
26c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
27c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(generic_lambdas, 0, 0, 201304)
28c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_generic_lambdas"
29c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
30c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
31176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if check(sized_deallocation, 0, 0, 201309)
32176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#error "wrong value for __cpp_sized_deallocation"
33176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
34176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
35c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(constexpr, 0, 200704, 201304)
36c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_constexpr"
37c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
38c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
39c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(decltype_auto, 0, 0, 201304)
40c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_decltype_auto"
41c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
42c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
43c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(return_type_deduction, 0, 0, 201304)
44c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_return_type_deduction"
45c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
46c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
47c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(runtime_arrays, 0, 0, 0)
48c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_runtime_arrays"
49c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
50c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
51c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(aggregate_nsdmi, 0, 0, 201304)
52c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_aggregate_nsdmi"
53c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
54c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
55c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(variable_templates, 0, 0, 201304)
56c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_variable_templates"
57c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
58c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
59c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(unicode_characters, 0, 200704, 200704)
60c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_unicode_characters"
61c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
62c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
63c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(raw_strings, 0, 200710, 200710)
64c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_raw_strings"
65c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
66c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
67c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(unicode_literals, 0, 200710, 200710)
68c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_unicode_literals"
69c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
70c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
71c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(user_defined_literals, 0, 200809, 200809)
72c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_user_defined_literals"
73c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
74c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
75c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(lambdas, 0, 200907, 200907)
76c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_lambdas"
77c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
78c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
79176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if check(range_based_for, 0, 200907, 200907)
80176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#error "wrong value for __cpp_range_based_for"
81176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
82176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
83c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(static_assert, 0, 200410, 200410)
84c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_static_assert"
85c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
86c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
87c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(decltype, 0, 200707, 200707)
88c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_decltype"
89c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
90c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
91c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(attributes, 0, 200809, 200809)
92c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_attributes"
93c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
94c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
95c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(rvalue_references, 0, 200610, 200610)
96c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_rvalue_references"
97c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
98c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling
99c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#if check(variadic_templates, 0, 200704, 200704)
100c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#error "wrong value for __cpp_variadic_templates"
101c78e5b33cb2dccfd7972eed2bc4a785cfa42bf94Bill Wendling#endif
102176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
103176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if check(initializer_lists, 0, 200806, 200806)
104176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#error "wrong value for __cpp_initializer_lists"
105176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
106176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
107176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if check(delegating_constructors, 0, 200604, 200604)
108176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#error "wrong value for __cpp_delegating_constructors"
109176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
110176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
111176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if check(nsdmi, 0, 200809, 200809)
112176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#error "wrong value for __cpp_nsdmi"
113176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
114176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
115176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if check(inheriting_constructors, 0, 200802, 200802)
116176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#error "wrong value for __cpp_inheriting_constructors"
117176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
118176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
119176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if check(ref_qualifiers, 0, 200710, 200710)
120176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#error "wrong value for __cpp_ref_qualifiers"
121176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
122176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
123176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if check(alias_templates, 0, 200704, 200704)
124176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#error "wrong value for __cpp_alias_templates"
125176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
126