12c6217f2SLouis Dionne //===----------------------------------------------------------------------===//
22c6217f2SLouis Dionne //
32c6217f2SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42c6217f2SLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
52c6217f2SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
62c6217f2SLouis Dionne //
72c6217f2SLouis Dionne //===----------------------------------------------------------------------===//
82c6217f2SLouis Dionne //
92c6217f2SLouis Dionne // WARNING: This test was generated by generate_feature_test_macro_components.py
102c6217f2SLouis Dionne // and should not be edited manually.
112c6217f2SLouis Dionne //
122c6217f2SLouis Dionne // clang-format off
132c6217f2SLouis Dionne 
142c6217f2SLouis Dionne // <span>
152c6217f2SLouis Dionne 
162c6217f2SLouis Dionne // Test the feature test macros defined by <span>
172c6217f2SLouis Dionne 
182c6217f2SLouis Dionne /*  Constant                           Value
192c6217f2SLouis Dionne     __cpp_lib_span                     202002L [C++20]
20*a72ab9c1SHristo Hristov     __cpp_lib_span_at                  202311L [C++26]
21f49ccca8SMark de Wever     __cpp_lib_span_initializer_list    202311L [C++26]
222c6217f2SLouis Dionne */
232c6217f2SLouis Dionne 
242c6217f2SLouis Dionne #include <span>
252c6217f2SLouis Dionne #include "test_macros.h"
262c6217f2SLouis Dionne 
272c6217f2SLouis Dionne #if TEST_STD_VER < 14
282c6217f2SLouis Dionne 
292c6217f2SLouis Dionne # ifdef __cpp_lib_span
302c6217f2SLouis Dionne #   error "__cpp_lib_span should not be defined before c++20"
312c6217f2SLouis Dionne # endif
322c6217f2SLouis Dionne 
33*a72ab9c1SHristo Hristov # ifdef __cpp_lib_span_at
34*a72ab9c1SHristo Hristov #   error "__cpp_lib_span_at should not be defined before c++26"
35*a72ab9c1SHristo Hristov # endif
36*a72ab9c1SHristo Hristov 
37f49ccca8SMark de Wever # ifdef __cpp_lib_span_initializer_list
38f49ccca8SMark de Wever #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
39f49ccca8SMark de Wever # endif
40f49ccca8SMark de Wever 
412c6217f2SLouis Dionne #elif TEST_STD_VER == 14
422c6217f2SLouis Dionne 
432c6217f2SLouis Dionne # ifdef __cpp_lib_span
442c6217f2SLouis Dionne #   error "__cpp_lib_span should not be defined before c++20"
452c6217f2SLouis Dionne # endif
462c6217f2SLouis Dionne 
47*a72ab9c1SHristo Hristov # ifdef __cpp_lib_span_at
48*a72ab9c1SHristo Hristov #   error "__cpp_lib_span_at should not be defined before c++26"
49*a72ab9c1SHristo Hristov # endif
50*a72ab9c1SHristo Hristov 
51f49ccca8SMark de Wever # ifdef __cpp_lib_span_initializer_list
52f49ccca8SMark de Wever #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
53f49ccca8SMark de Wever # endif
54f49ccca8SMark de Wever 
552c6217f2SLouis Dionne #elif TEST_STD_VER == 17
562c6217f2SLouis Dionne 
572c6217f2SLouis Dionne # ifdef __cpp_lib_span
582c6217f2SLouis Dionne #   error "__cpp_lib_span should not be defined before c++20"
592c6217f2SLouis Dionne # endif
602c6217f2SLouis Dionne 
61*a72ab9c1SHristo Hristov # ifdef __cpp_lib_span_at
62*a72ab9c1SHristo Hristov #   error "__cpp_lib_span_at should not be defined before c++26"
63*a72ab9c1SHristo Hristov # endif
64*a72ab9c1SHristo Hristov 
65f49ccca8SMark de Wever # ifdef __cpp_lib_span_initializer_list
66f49ccca8SMark de Wever #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
67f49ccca8SMark de Wever # endif
68f49ccca8SMark de Wever 
692c6217f2SLouis Dionne #elif TEST_STD_VER == 20
702c6217f2SLouis Dionne 
712c6217f2SLouis Dionne # ifndef __cpp_lib_span
722c6217f2SLouis Dionne #   error "__cpp_lib_span should be defined in c++20"
732c6217f2SLouis Dionne # endif
742c6217f2SLouis Dionne # if __cpp_lib_span != 202002L
752c6217f2SLouis Dionne #   error "__cpp_lib_span should have the value 202002L in c++20"
762c6217f2SLouis Dionne # endif
772c6217f2SLouis Dionne 
78*a72ab9c1SHristo Hristov # ifdef __cpp_lib_span_at
79*a72ab9c1SHristo Hristov #   error "__cpp_lib_span_at should not be defined before c++26"
80*a72ab9c1SHristo Hristov # endif
81*a72ab9c1SHristo Hristov 
82f49ccca8SMark de Wever # ifdef __cpp_lib_span_initializer_list
83f49ccca8SMark de Wever #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
84f49ccca8SMark de Wever # endif
85f49ccca8SMark de Wever 
8600c97cbcSMark de Wever #elif TEST_STD_VER == 23
872c6217f2SLouis Dionne 
882c6217f2SLouis Dionne # ifndef __cpp_lib_span
8971400505SMark de Wever #   error "__cpp_lib_span should be defined in c++23"
902c6217f2SLouis Dionne # endif
912c6217f2SLouis Dionne # if __cpp_lib_span != 202002L
9271400505SMark de Wever #   error "__cpp_lib_span should have the value 202002L in c++23"
932c6217f2SLouis Dionne # endif
942c6217f2SLouis Dionne 
95*a72ab9c1SHristo Hristov # ifdef __cpp_lib_span_at
96*a72ab9c1SHristo Hristov #   error "__cpp_lib_span_at should not be defined before c++26"
97*a72ab9c1SHristo Hristov # endif
98*a72ab9c1SHristo Hristov 
99f49ccca8SMark de Wever # ifdef __cpp_lib_span_initializer_list
100f49ccca8SMark de Wever #   error "__cpp_lib_span_initializer_list should not be defined before c++26"
101f49ccca8SMark de Wever # endif
102f49ccca8SMark de Wever 
10300c97cbcSMark de Wever #elif TEST_STD_VER > 23
10400c97cbcSMark de Wever 
10500c97cbcSMark de Wever # ifndef __cpp_lib_span
10600c97cbcSMark de Wever #   error "__cpp_lib_span should be defined in c++26"
10700c97cbcSMark de Wever # endif
10800c97cbcSMark de Wever # if __cpp_lib_span != 202002L
10900c97cbcSMark de Wever #   error "__cpp_lib_span should have the value 202002L in c++26"
11000c97cbcSMark de Wever # endif
11100c97cbcSMark de Wever 
112*a72ab9c1SHristo Hristov # ifndef __cpp_lib_span_at
113*a72ab9c1SHristo Hristov #   error "__cpp_lib_span_at should be defined in c++26"
114*a72ab9c1SHristo Hristov # endif
115*a72ab9c1SHristo Hristov # if __cpp_lib_span_at != 202311L
116*a72ab9c1SHristo Hristov #   error "__cpp_lib_span_at should have the value 202311L in c++26"
117*a72ab9c1SHristo Hristov # endif
118*a72ab9c1SHristo Hristov 
119f49ccca8SMark de Wever # ifndef __cpp_lib_span_initializer_list
120f49ccca8SMark de Wever #   error "__cpp_lib_span_initializer_list should be defined in c++26"
121f49ccca8SMark de Wever # endif
122f49ccca8SMark de Wever # if __cpp_lib_span_initializer_list != 202311L
123f49ccca8SMark de Wever #   error "__cpp_lib_span_initializer_list should have the value 202311L in c++26"
124f49ccca8SMark de Wever # endif
125f49ccca8SMark de Wever 
12600c97cbcSMark de Wever #endif // TEST_STD_VER > 23
1272c6217f2SLouis Dionne 
128