1 // { dg-do compile }
2 // { dg-options "-std=gnu++11" }
3 
4 //  C++98 features:
5 
6 #ifndef __cpp_rtti
7 #  error "__cpp_rtti"
8 #elif  __cpp_rtti != 199711
9 #  error "__cpp_rtti != 199711"
10 #endif
11 
12 #ifndef __cpp_exceptions
13 #  error "__cpp_exceptions"
14 #elif  __cpp_exceptions != 199711
15 #  error "__cpp_exceptions != 199711"
16 #endif
17 
18 //  C++11 features:
19 
20 #ifndef __cpp_unicode_characters
21 #  error "__cpp_unicode_characters"
22 #elif __cpp_unicode_characters != 200704
23 #  error "__cpp_unicode_characters != 200704"
24 #endif
25 
26 #ifndef __cpp_raw_strings
27 #  error "__cpp_raw_strings"
28 #elif __cpp_raw_strings != 200710
29 #  error "__cpp_raw_strings != 200710"
30 #endif
31 
32 #ifndef __cpp_unicode_literals
33 #  error "__cpp_unicode_literals"
34 #elif __cpp_unicode_literals != 200710
35 #  error "__cpp_unicode_literals != 200710"
36 #endif
37 
38 #ifndef __cpp_user_defined_literals
39 #  error "__cpp_user_defined_literals"
40 #elif __cpp_user_defined_literals != 200809
41 #  error "__cpp_user_defined_literals != 200809"
42 #endif
43 
44 #ifndef __cpp_lambdas
45 #  error "__cpp_lambdas"
46 #elif __cpp_lambdas != 200907
47 #  error "__cpp_lambdas != 200907"
48 #endif
49 
50 #ifndef __cpp_constexpr
51 #  error "__cpp_constexpr"
52 #elif __cpp_constexpr != 200704
53 #  error "__cpp_constexpr != 200704"
54 #endif
55 
56 #ifndef __cpp_range_based_for
57 #  error "__cpp_range_based_for"
58 #elif __cpp_range_based_for < 200907
59 #  error "__cpp_range_based_for < 200907"
60 #endif
61 
62 #ifndef __cpp_static_assert
63 #  error "__cpp_static_assert"
64 #elif __cpp_static_assert != 200410
65 #  error "__cpp_static_assert != 200410"
66 #endif
67 
68 #ifndef __cpp_decltype
69 #  error "__cpp_decltype"
70 #elif __cpp_decltype != 200707
71 #  error "__cpp_decltype != 200707"
72 #endif
73 
74 #ifndef __cpp_attributes
75 #  error "__cpp_attributes"
76 #elif __cpp_attributes != 200809
77 #  error "__cpp_attributes != 200809"
78 #endif
79 
80 #ifndef __cpp_rvalue_references
81 #  error "__cpp_rvalue_references"
82 #elif __cpp_rvalue_references != 200610
83 #  error "__cpp_rvalue_references != 200610"
84 #endif
85 
86 #ifndef __cpp_variadic_templates
87 #  error "__cpp_variadic_templates"
88 #elif __cpp_variadic_templates != 200704
89 #  error "__cpp_variadic_templates != 200704"
90 #endif
91 
92 #ifndef __cpp_initializer_lists
93 #  error "__cpp_initializer_lists"
94 #elif __cpp_initializer_lists != 200806
95 #  error "__cpp_initializer_lists != 200806"
96 #endif
97 
98 #ifndef __cpp_delegating_constructors
99 #  error "__cpp_delegating_constructors"
100 #elif __cpp_delegating_constructors != 200604
101 #  error "__cpp_delegating_constructors != 200604"
102 #endif
103 
104 #ifndef __cpp_nsdmi
105 #  error "__cpp_nsdmi"
106 #elif __cpp_nsdmi != 200809
107 #  error "__cpp_nsdmi != 200809"
108 #endif
109 
110 #ifndef __cpp_inheriting_constructors
111 #  error "__cpp_inheriting_constructors"
112 #elif  __cpp_inheriting_constructors!= 201511
113 #  error "__cpp_inheriting_constructors != 201511"
114 #endif
115 
116 #ifndef __cpp_ref_qualifiers
117 #  error "__cpp_ref_qualifiers"
118 #elif __cpp_ref_qualifiers != 200710
119 #  error "__cpp_ref_qualifiers != 200710"
120 #endif
121 
122 #ifndef __cpp_alias_templates
123 #  error "__cpp_alias_templates"
124 #elif __cpp_alias_templates != 200704
125 #  error "__cpp_alias_templates != 200704"
126 #endif
127 
128 #ifndef __cpp_threadsafe_static_init
129 #  error "__cpp_threadsafe_static_init"
130 #elif __cpp_threadsafe_static_init != 200806
131 #  error "__cpp_threadsafe_static_init != 200806"
132 #endif
133 
134 //  C++14 features allowed in C++11 in non-ANSI modes:
135 
136 #ifndef __cpp_binary_literals
137 #  error "__cpp_binary_literals"
138 #elif __cpp_binary_literals != 201304
139 #  error "__cpp_binary_literals != 201304"
140 #endif
141 
142 //  GNU VLA support:
143 
144 #ifndef __cpp_runtime_arrays
145 #  error "__cpp_runtime_arrays"
146 #elif __cpp_runtime_arrays != 198712
147 #  error "__cpp_runtime_arrays != 198712"
148 #endif
149 
150 //  C++11 attributes:
151 
152 #ifdef __has_cpp_attribute
153 #  if ! __has_cpp_attribute(noreturn)
154 #    error "__has_cpp_attribute(noreturn)"
155 #  elif __has_cpp_attribute(noreturn) != 200809
156 #    error "__has_cpp_attribute(noreturn) != 200809"
157 #  endif
158 #else
159 #  error "__has_cpp_attribute"
160 #endif
161 
162 #ifdef __has_cpp_attribute
163 //  Attribute carries_dependency not in yet.
164 //#  if ! __has_cpp_attribute(carries_dependency)
165 //#    error "__has_cpp_attribute(carries_dependency)"
166 //#  elif __has_cpp_attribute(carries_dependency) != 200809
167 //#    error "__has_cpp_attribute(carries_dependency) != 200809"
168 //#  endif
169 #else
170 #  error "__has_cpp_attribute"
171 #endif
172 
173 //  C++14 attributes:
174 
175 //  Attribute [[deprecated]] is allowed in C++11 as an extension.
176 #ifdef __has_cpp_attribute
177 #  if ! __has_cpp_attribute(deprecated)
178 #    error "__has_cpp_attribute(deprecated)"
179 #  elif __has_cpp_attribute(deprecated) != 201309
180 #    error "__has_cpp_attribute(deprecated) != 201309"
181 #  endif
182 #else
183 #  error "__has_cpp_attribute"
184 #endif
185