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 // <span>
15 
16 // Test the feature test macros defined by <span>
17 
18 /*  Constant                           Value
19     __cpp_lib_span                     202002L [C++20]
20     __cpp_lib_span_at                  202311L [C++26]
21     __cpp_lib_span_initializer_list    202311L [C++26]
22 */
23 
24 #include <span>
25 #include "test_macros.h"
26 
27 #if TEST_STD_VER < 14
28 
29 # ifdef __cpp_lib_span
30 #   error "__cpp_lib_span should not be defined before c++20"
31 # endif
32 
33 # ifdef __cpp_lib_span_at
34 #   error "__cpp_lib_span_at should not be defined before c++26"
35 # endif
36 
37 # ifdef __cpp_lib_span_initializer_list
38 #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
39 # endif
40 
41 #elif TEST_STD_VER == 14
42 
43 # ifdef __cpp_lib_span
44 #   error "__cpp_lib_span should not be defined before c++20"
45 # endif
46 
47 # ifdef __cpp_lib_span_at
48 #   error "__cpp_lib_span_at should not be defined before c++26"
49 # endif
50 
51 # ifdef __cpp_lib_span_initializer_list
52 #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
53 # endif
54 
55 #elif TEST_STD_VER == 17
56 
57 # ifdef __cpp_lib_span
58 #   error "__cpp_lib_span should not be defined before c++20"
59 # endif
60 
61 # ifdef __cpp_lib_span_at
62 #   error "__cpp_lib_span_at should not be defined before c++26"
63 # endif
64 
65 # ifdef __cpp_lib_span_initializer_list
66 #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
67 # endif
68 
69 #elif TEST_STD_VER == 20
70 
71 # ifndef __cpp_lib_span
72 #   error "__cpp_lib_span should be defined in c++20"
73 # endif
74 # if __cpp_lib_span != 202002L
75 #   error "__cpp_lib_span should have the value 202002L in c++20"
76 # endif
77 
78 # ifdef __cpp_lib_span_at
79 #   error "__cpp_lib_span_at should not be defined before c++26"
80 # endif
81 
82 # ifdef __cpp_lib_span_initializer_list
83 #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
84 # endif
85 
86 #elif TEST_STD_VER == 23
87 
88 # ifndef __cpp_lib_span
89 #   error "__cpp_lib_span should be defined in c++23"
90 # endif
91 # if __cpp_lib_span != 202002L
92 #   error "__cpp_lib_span should have the value 202002L in c++23"
93 # endif
94 
95 # ifdef __cpp_lib_span_at
96 #   error "__cpp_lib_span_at should not be defined before c++26"
97 # endif
98 
99 # ifdef __cpp_lib_span_initializer_list
100 #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
101 # endif
102 
103 #elif TEST_STD_VER > 23
104 
105 # ifndef __cpp_lib_span
106 #   error "__cpp_lib_span should be defined in c++26"
107 # endif
108 # if __cpp_lib_span != 202002L
109 #   error "__cpp_lib_span should have the value 202002L in c++26"
110 # endif
111 
112 # ifndef __cpp_lib_span_at
113 #   error "__cpp_lib_span_at should be defined in c++26"
114 # endif
115 # if __cpp_lib_span_at != 202311L
116 #   error "__cpp_lib_span_at should have the value 202311L in c++26"
117 # endif
118 
119 # ifndef __cpp_lib_span_initializer_list
120 #   error "__cpp_lib_span_initializer_list should be defined in c++26"
121 # endif
122 # if __cpp_lib_span_initializer_list != 202311L
123 #   error "__cpp_lib_span_initializer_list should have the value 202311L in c++26"
124 # endif
125 
126 #endif // TEST_STD_VER > 23
127 
128