1fcaccf81SChristian Trott //===----------------------------------------------------------------------===// 2fcaccf81SChristian Trott // 3fcaccf81SChristian Trott // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4fcaccf81SChristian Trott // See https://llvm.org/LICENSE.txt for license information. 5fcaccf81SChristian Trott // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6fcaccf81SChristian Trott // 7fcaccf81SChristian Trott //===----------------------------------------------------------------------===// 8fcaccf81SChristian Trott // 9fcaccf81SChristian Trott // WARNING: This test was generated by generate_feature_test_macro_components.py 10fcaccf81SChristian Trott // and should not be edited manually. 11fcaccf81SChristian Trott // 12fcaccf81SChristian Trott // clang-format off 13fcaccf81SChristian Trott 14fcaccf81SChristian Trott // <mdspan> 15fcaccf81SChristian Trott 16fcaccf81SChristian Trott // Test the feature test macros defined by <mdspan> 17fcaccf81SChristian Trott 18fcaccf81SChristian Trott /* Constant Value 19f49ccca8SMark de Wever __cpp_lib_freestanding_mdspan 202311L [C++26] 2071400505SMark de Wever __cpp_lib_mdspan 202207L [C++23] 21*4e338dceSXiaoyang Liu 202406L [C++26] 223f05d044SMark de Wever __cpp_lib_submdspan 202306L [C++26] 23fcaccf81SChristian Trott */ 24fcaccf81SChristian Trott 25fcaccf81SChristian Trott #include <mdspan> 26fcaccf81SChristian Trott #include "test_macros.h" 27fcaccf81SChristian Trott 28fcaccf81SChristian Trott #if TEST_STD_VER < 14 29fcaccf81SChristian Trott 30f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_mdspan 31f49ccca8SMark de Wever # error "__cpp_lib_freestanding_mdspan should not be defined before c++26" 32f49ccca8SMark de Wever # endif 33f49ccca8SMark de Wever 34fcaccf81SChristian Trott # ifdef __cpp_lib_mdspan 3571400505SMark de Wever # error "__cpp_lib_mdspan should not be defined before c++23" 36fcaccf81SChristian Trott # endif 37fcaccf81SChristian Trott 383f05d044SMark de Wever # ifdef __cpp_lib_submdspan 393f05d044SMark de Wever # error "__cpp_lib_submdspan should not be defined before c++26" 403f05d044SMark de Wever # endif 413f05d044SMark de Wever 42fcaccf81SChristian Trott #elif TEST_STD_VER == 14 43fcaccf81SChristian Trott 44f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_mdspan 45f49ccca8SMark de Wever # error "__cpp_lib_freestanding_mdspan should not be defined before c++26" 46f49ccca8SMark de Wever # endif 47f49ccca8SMark de Wever 48fcaccf81SChristian Trott # ifdef __cpp_lib_mdspan 4971400505SMark de Wever # error "__cpp_lib_mdspan should not be defined before c++23" 50fcaccf81SChristian Trott # endif 51fcaccf81SChristian Trott 523f05d044SMark de Wever # ifdef __cpp_lib_submdspan 533f05d044SMark de Wever # error "__cpp_lib_submdspan should not be defined before c++26" 543f05d044SMark de Wever # endif 553f05d044SMark de Wever 56fcaccf81SChristian Trott #elif TEST_STD_VER == 17 57fcaccf81SChristian Trott 58f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_mdspan 59f49ccca8SMark de Wever # error "__cpp_lib_freestanding_mdspan should not be defined before c++26" 60f49ccca8SMark de Wever # endif 61f49ccca8SMark de Wever 62fcaccf81SChristian Trott # ifdef __cpp_lib_mdspan 6371400505SMark de Wever # error "__cpp_lib_mdspan should not be defined before c++23" 64fcaccf81SChristian Trott # endif 65fcaccf81SChristian Trott 663f05d044SMark de Wever # ifdef __cpp_lib_submdspan 673f05d044SMark de Wever # error "__cpp_lib_submdspan should not be defined before c++26" 683f05d044SMark de Wever # endif 693f05d044SMark de Wever 70fcaccf81SChristian Trott #elif TEST_STD_VER == 20 71fcaccf81SChristian Trott 72f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_mdspan 73f49ccca8SMark de Wever # error "__cpp_lib_freestanding_mdspan should not be defined before c++26" 74f49ccca8SMark de Wever # endif 75f49ccca8SMark de Wever 76fcaccf81SChristian Trott # ifdef __cpp_lib_mdspan 7771400505SMark de Wever # error "__cpp_lib_mdspan should not be defined before c++23" 78fcaccf81SChristian Trott # endif 79fcaccf81SChristian Trott 803f05d044SMark de Wever # ifdef __cpp_lib_submdspan 813f05d044SMark de Wever # error "__cpp_lib_submdspan should not be defined before c++26" 823f05d044SMark de Wever # endif 833f05d044SMark de Wever 8400c97cbcSMark de Wever #elif TEST_STD_VER == 23 85fcaccf81SChristian Trott 86f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_mdspan 87f49ccca8SMark de Wever # error "__cpp_lib_freestanding_mdspan should not be defined before c++26" 88f49ccca8SMark de Wever # endif 89f49ccca8SMark de Wever 90fcaccf81SChristian Trott # ifndef __cpp_lib_mdspan 9171400505SMark de Wever # error "__cpp_lib_mdspan should be defined in c++23" 92fcaccf81SChristian Trott # endif 93fcaccf81SChristian Trott # if __cpp_lib_mdspan != 202207L 9471400505SMark de Wever # error "__cpp_lib_mdspan should have the value 202207L in c++23" 95fcaccf81SChristian Trott # endif 96fcaccf81SChristian Trott 973f05d044SMark de Wever # ifdef __cpp_lib_submdspan 983f05d044SMark de Wever # error "__cpp_lib_submdspan should not be defined before c++26" 993f05d044SMark de Wever # endif 1003f05d044SMark de Wever 10100c97cbcSMark de Wever #elif TEST_STD_VER > 23 10200c97cbcSMark de Wever 103f49ccca8SMark de Wever # if !defined(_LIBCPP_VERSION) 104f49ccca8SMark de Wever # ifndef __cpp_lib_freestanding_mdspan 105f49ccca8SMark de Wever # error "__cpp_lib_freestanding_mdspan should be defined in c++26" 106f49ccca8SMark de Wever # endif 107f49ccca8SMark de Wever # if __cpp_lib_freestanding_mdspan != 202311L 108f49ccca8SMark de Wever # error "__cpp_lib_freestanding_mdspan should have the value 202311L in c++26" 109f49ccca8SMark de Wever # endif 110f49ccca8SMark de Wever # else // _LIBCPP_VERSION 111f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_mdspan 112f49ccca8SMark de Wever # error "__cpp_lib_freestanding_mdspan should not be defined because it is unimplemented in libc++!" 113f49ccca8SMark de Wever # endif 114f49ccca8SMark de Wever # endif 115f49ccca8SMark de Wever 11600c97cbcSMark de Wever # ifndef __cpp_lib_mdspan 11700c97cbcSMark de Wever # error "__cpp_lib_mdspan should be defined in c++26" 11800c97cbcSMark de Wever # endif 119*4e338dceSXiaoyang Liu # if __cpp_lib_mdspan != 202406L 120*4e338dceSXiaoyang Liu # error "__cpp_lib_mdspan should have the value 202406L in c++26" 12100c97cbcSMark de Wever # endif 12200c97cbcSMark de Wever 1233f05d044SMark de Wever # if !defined(_LIBCPP_VERSION) 1243f05d044SMark de Wever # ifndef __cpp_lib_submdspan 1253f05d044SMark de Wever # error "__cpp_lib_submdspan should be defined in c++26" 1263f05d044SMark de Wever # endif 1273f05d044SMark de Wever # if __cpp_lib_submdspan != 202306L 1283f05d044SMark de Wever # error "__cpp_lib_submdspan should have the value 202306L in c++26" 1293f05d044SMark de Wever # endif 1303f05d044SMark de Wever # else // _LIBCPP_VERSION 1313f05d044SMark de Wever # ifdef __cpp_lib_submdspan 1323f05d044SMark de Wever # error "__cpp_lib_submdspan should not be defined because it is unimplemented in libc++!" 1333f05d044SMark de Wever # endif 1343f05d044SMark de Wever # endif 1353f05d044SMark de Wever 13600c97cbcSMark de Wever #endif // TEST_STD_VER > 23 137fcaccf81SChristian Trott 138