1 //===----------------------------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // WARNING: This test was generated by generate_feature_test_macro_components.py 10 // and should not be edited manually. 11 // 12 // clang-format off 13 14 // <tuple> 15 16 // Test the feature test macros defined by <tuple> 17 18 /* Constant Value 19 __cpp_lib_apply 201603L [C++17] 20 __cpp_lib_constexpr_tuple 201811L [C++20] 21 __cpp_lib_constrained_equality 202403L [C++26] 22 __cpp_lib_make_from_tuple 201606L [C++17] 23 __cpp_lib_ranges_zip 202110L [C++23] 24 __cpp_lib_tuple_element_t 201402L [C++14] 25 __cpp_lib_tuple_like 202207L [C++23] 26 202311L [C++26] 27 __cpp_lib_tuples_by_type 201304L [C++14] 28 */ 29 30 #include <tuple> 31 #include "test_macros.h" 32 33 #if TEST_STD_VER < 14 34 35 # ifdef __cpp_lib_apply 36 # error "__cpp_lib_apply should not be defined before c++17" 37 # endif 38 39 # ifdef __cpp_lib_constexpr_tuple 40 # error "__cpp_lib_constexpr_tuple should not be defined before c++20" 41 # endif 42 43 # ifdef __cpp_lib_constrained_equality 44 # error "__cpp_lib_constrained_equality should not be defined before c++26" 45 # endif 46 47 # ifdef __cpp_lib_make_from_tuple 48 # error "__cpp_lib_make_from_tuple should not be defined before c++17" 49 # endif 50 51 # ifdef __cpp_lib_ranges_zip 52 # error "__cpp_lib_ranges_zip should not be defined before c++23" 53 # endif 54 55 # ifdef __cpp_lib_tuple_element_t 56 # error "__cpp_lib_tuple_element_t should not be defined before c++14" 57 # endif 58 59 # ifdef __cpp_lib_tuple_like 60 # error "__cpp_lib_tuple_like should not be defined before c++23" 61 # endif 62 63 # ifdef __cpp_lib_tuples_by_type 64 # error "__cpp_lib_tuples_by_type should not be defined before c++14" 65 # endif 66 67 #elif TEST_STD_VER == 14 68 69 # ifdef __cpp_lib_apply 70 # error "__cpp_lib_apply should not be defined before c++17" 71 # endif 72 73 # ifdef __cpp_lib_constexpr_tuple 74 # error "__cpp_lib_constexpr_tuple should not be defined before c++20" 75 # endif 76 77 # ifdef __cpp_lib_constrained_equality 78 # error "__cpp_lib_constrained_equality should not be defined before c++26" 79 # endif 80 81 # ifdef __cpp_lib_make_from_tuple 82 # error "__cpp_lib_make_from_tuple should not be defined before c++17" 83 # endif 84 85 # ifdef __cpp_lib_ranges_zip 86 # error "__cpp_lib_ranges_zip should not be defined before c++23" 87 # endif 88 89 # ifndef __cpp_lib_tuple_element_t 90 # error "__cpp_lib_tuple_element_t should be defined in c++14" 91 # endif 92 # if __cpp_lib_tuple_element_t != 201402L 93 # error "__cpp_lib_tuple_element_t should have the value 201402L in c++14" 94 # endif 95 96 # ifdef __cpp_lib_tuple_like 97 # error "__cpp_lib_tuple_like should not be defined before c++23" 98 # endif 99 100 # ifndef __cpp_lib_tuples_by_type 101 # error "__cpp_lib_tuples_by_type should be defined in c++14" 102 # endif 103 # if __cpp_lib_tuples_by_type != 201304L 104 # error "__cpp_lib_tuples_by_type should have the value 201304L in c++14" 105 # endif 106 107 #elif TEST_STD_VER == 17 108 109 # ifndef __cpp_lib_apply 110 # error "__cpp_lib_apply should be defined in c++17" 111 # endif 112 # if __cpp_lib_apply != 201603L 113 # error "__cpp_lib_apply should have the value 201603L in c++17" 114 # endif 115 116 # ifdef __cpp_lib_constexpr_tuple 117 # error "__cpp_lib_constexpr_tuple should not be defined before c++20" 118 # endif 119 120 # ifdef __cpp_lib_constrained_equality 121 # error "__cpp_lib_constrained_equality should not be defined before c++26" 122 # endif 123 124 # ifndef __cpp_lib_make_from_tuple 125 # error "__cpp_lib_make_from_tuple should be defined in c++17" 126 # endif 127 # if __cpp_lib_make_from_tuple != 201606L 128 # error "__cpp_lib_make_from_tuple should have the value 201606L in c++17" 129 # endif 130 131 # ifdef __cpp_lib_ranges_zip 132 # error "__cpp_lib_ranges_zip should not be defined before c++23" 133 # endif 134 135 # ifndef __cpp_lib_tuple_element_t 136 # error "__cpp_lib_tuple_element_t should be defined in c++17" 137 # endif 138 # if __cpp_lib_tuple_element_t != 201402L 139 # error "__cpp_lib_tuple_element_t should have the value 201402L in c++17" 140 # endif 141 142 # ifdef __cpp_lib_tuple_like 143 # error "__cpp_lib_tuple_like should not be defined before c++23" 144 # endif 145 146 # ifndef __cpp_lib_tuples_by_type 147 # error "__cpp_lib_tuples_by_type should be defined in c++17" 148 # endif 149 # if __cpp_lib_tuples_by_type != 201304L 150 # error "__cpp_lib_tuples_by_type should have the value 201304L in c++17" 151 # endif 152 153 #elif TEST_STD_VER == 20 154 155 # ifndef __cpp_lib_apply 156 # error "__cpp_lib_apply should be defined in c++20" 157 # endif 158 # if __cpp_lib_apply != 201603L 159 # error "__cpp_lib_apply should have the value 201603L in c++20" 160 # endif 161 162 # ifndef __cpp_lib_constexpr_tuple 163 # error "__cpp_lib_constexpr_tuple should be defined in c++20" 164 # endif 165 # if __cpp_lib_constexpr_tuple != 201811L 166 # error "__cpp_lib_constexpr_tuple should have the value 201811L in c++20" 167 # endif 168 169 # ifdef __cpp_lib_constrained_equality 170 # error "__cpp_lib_constrained_equality should not be defined before c++26" 171 # endif 172 173 # ifndef __cpp_lib_make_from_tuple 174 # error "__cpp_lib_make_from_tuple should be defined in c++20" 175 # endif 176 # if __cpp_lib_make_from_tuple != 201606L 177 # error "__cpp_lib_make_from_tuple should have the value 201606L in c++20" 178 # endif 179 180 # ifdef __cpp_lib_ranges_zip 181 # error "__cpp_lib_ranges_zip should not be defined before c++23" 182 # endif 183 184 # ifndef __cpp_lib_tuple_element_t 185 # error "__cpp_lib_tuple_element_t should be defined in c++20" 186 # endif 187 # if __cpp_lib_tuple_element_t != 201402L 188 # error "__cpp_lib_tuple_element_t should have the value 201402L in c++20" 189 # endif 190 191 # ifdef __cpp_lib_tuple_like 192 # error "__cpp_lib_tuple_like should not be defined before c++23" 193 # endif 194 195 # ifndef __cpp_lib_tuples_by_type 196 # error "__cpp_lib_tuples_by_type should be defined in c++20" 197 # endif 198 # if __cpp_lib_tuples_by_type != 201304L 199 # error "__cpp_lib_tuples_by_type should have the value 201304L in c++20" 200 # endif 201 202 #elif TEST_STD_VER == 23 203 204 # ifndef __cpp_lib_apply 205 # error "__cpp_lib_apply should be defined in c++23" 206 # endif 207 # if __cpp_lib_apply != 201603L 208 # error "__cpp_lib_apply should have the value 201603L in c++23" 209 # endif 210 211 # ifndef __cpp_lib_constexpr_tuple 212 # error "__cpp_lib_constexpr_tuple should be defined in c++23" 213 # endif 214 # if __cpp_lib_constexpr_tuple != 201811L 215 # error "__cpp_lib_constexpr_tuple should have the value 201811L in c++23" 216 # endif 217 218 # ifdef __cpp_lib_constrained_equality 219 # error "__cpp_lib_constrained_equality should not be defined before c++26" 220 # endif 221 222 # ifndef __cpp_lib_make_from_tuple 223 # error "__cpp_lib_make_from_tuple should be defined in c++23" 224 # endif 225 # if __cpp_lib_make_from_tuple != 201606L 226 # error "__cpp_lib_make_from_tuple should have the value 201606L in c++23" 227 # endif 228 229 # if !defined(_LIBCPP_VERSION) 230 # ifndef __cpp_lib_ranges_zip 231 # error "__cpp_lib_ranges_zip should be defined in c++23" 232 # endif 233 # if __cpp_lib_ranges_zip != 202110L 234 # error "__cpp_lib_ranges_zip should have the value 202110L in c++23" 235 # endif 236 # else // _LIBCPP_VERSION 237 # ifdef __cpp_lib_ranges_zip 238 # error "__cpp_lib_ranges_zip should not be defined because it is unimplemented in libc++!" 239 # endif 240 # endif 241 242 # ifndef __cpp_lib_tuple_element_t 243 # error "__cpp_lib_tuple_element_t should be defined in c++23" 244 # endif 245 # if __cpp_lib_tuple_element_t != 201402L 246 # error "__cpp_lib_tuple_element_t should have the value 201402L in c++23" 247 # endif 248 249 # if !defined(_LIBCPP_VERSION) 250 # ifndef __cpp_lib_tuple_like 251 # error "__cpp_lib_tuple_like should be defined in c++23" 252 # endif 253 # if __cpp_lib_tuple_like != 202207L 254 # error "__cpp_lib_tuple_like should have the value 202207L in c++23" 255 # endif 256 # else // _LIBCPP_VERSION 257 # ifdef __cpp_lib_tuple_like 258 # error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!" 259 # endif 260 # endif 261 262 # ifndef __cpp_lib_tuples_by_type 263 # error "__cpp_lib_tuples_by_type should be defined in c++23" 264 # endif 265 # if __cpp_lib_tuples_by_type != 201304L 266 # error "__cpp_lib_tuples_by_type should have the value 201304L in c++23" 267 # endif 268 269 #elif TEST_STD_VER > 23 270 271 # ifndef __cpp_lib_apply 272 # error "__cpp_lib_apply should be defined in c++26" 273 # endif 274 # if __cpp_lib_apply != 201603L 275 # error "__cpp_lib_apply should have the value 201603L in c++26" 276 # endif 277 278 # ifndef __cpp_lib_constexpr_tuple 279 # error "__cpp_lib_constexpr_tuple should be defined in c++26" 280 # endif 281 # if __cpp_lib_constexpr_tuple != 201811L 282 # error "__cpp_lib_constexpr_tuple should have the value 201811L in c++26" 283 # endif 284 285 # if !defined(_LIBCPP_VERSION) 286 # ifndef __cpp_lib_constrained_equality 287 # error "__cpp_lib_constrained_equality should be defined in c++26" 288 # endif 289 # if __cpp_lib_constrained_equality != 202403L 290 # error "__cpp_lib_constrained_equality should have the value 202403L in c++26" 291 # endif 292 # else // _LIBCPP_VERSION 293 # ifdef __cpp_lib_constrained_equality 294 # error "__cpp_lib_constrained_equality should not be defined because it is unimplemented in libc++!" 295 # endif 296 # endif 297 298 # ifndef __cpp_lib_make_from_tuple 299 # error "__cpp_lib_make_from_tuple should be defined in c++26" 300 # endif 301 # if __cpp_lib_make_from_tuple != 201606L 302 # error "__cpp_lib_make_from_tuple should have the value 201606L in c++26" 303 # endif 304 305 # if !defined(_LIBCPP_VERSION) 306 # ifndef __cpp_lib_ranges_zip 307 # error "__cpp_lib_ranges_zip should be defined in c++26" 308 # endif 309 # if __cpp_lib_ranges_zip != 202110L 310 # error "__cpp_lib_ranges_zip should have the value 202110L in c++26" 311 # endif 312 # else // _LIBCPP_VERSION 313 # ifdef __cpp_lib_ranges_zip 314 # error "__cpp_lib_ranges_zip should not be defined because it is unimplemented in libc++!" 315 # endif 316 # endif 317 318 # ifndef __cpp_lib_tuple_element_t 319 # error "__cpp_lib_tuple_element_t should be defined in c++26" 320 # endif 321 # if __cpp_lib_tuple_element_t != 201402L 322 # error "__cpp_lib_tuple_element_t should have the value 201402L in c++26" 323 # endif 324 325 # if !defined(_LIBCPP_VERSION) 326 # ifndef __cpp_lib_tuple_like 327 # error "__cpp_lib_tuple_like should be defined in c++26" 328 # endif 329 # if __cpp_lib_tuple_like != 202311L 330 # error "__cpp_lib_tuple_like should have the value 202311L in c++26" 331 # endif 332 # else // _LIBCPP_VERSION 333 # ifdef __cpp_lib_tuple_like 334 # error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!" 335 # endif 336 # endif 337 338 # ifndef __cpp_lib_tuples_by_type 339 # error "__cpp_lib_tuples_by_type should be defined in c++26" 340 # endif 341 # if __cpp_lib_tuples_by_type != 201304L 342 # error "__cpp_lib_tuples_by_type should have the value 201304L in c++26" 343 # endif 344 345 #endif // TEST_STD_VER > 23 346 347