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