1*f49ccca8SMark de Wever //===----------------------------------------------------------------------===// 2*f49ccca8SMark de Wever // 3*f49ccca8SMark de Wever // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*f49ccca8SMark de Wever // See https://llvm.org/LICENSE.txt for license information. 5*f49ccca8SMark de Wever // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*f49ccca8SMark de Wever // 7*f49ccca8SMark de Wever //===----------------------------------------------------------------------===// 8*f49ccca8SMark de Wever // 9*f49ccca8SMark de Wever // WARNING: This test was generated by generate_feature_test_macro_components.py 10*f49ccca8SMark de Wever // and should not be edited manually. 11*f49ccca8SMark de Wever // 12*f49ccca8SMark de Wever // clang-format off 13*f49ccca8SMark de Wever 14*f49ccca8SMark de Wever // <cstring> 15*f49ccca8SMark de Wever 16*f49ccca8SMark de Wever // Test the feature test macros defined by <cstring> 17*f49ccca8SMark de Wever 18*f49ccca8SMark de Wever /* Constant Value 19*f49ccca8SMark de Wever __cpp_lib_freestanding_cstring 202306L [C++26] 20*f49ccca8SMark de Wever */ 21*f49ccca8SMark de Wever 22*f49ccca8SMark de Wever #include <cstring> 23*f49ccca8SMark de Wever #include "test_macros.h" 24*f49ccca8SMark de Wever 25*f49ccca8SMark de Wever #if TEST_STD_VER < 14 26*f49ccca8SMark de Wever 27*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_cstring 28*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_cstring should not be defined before c++26" 29*f49ccca8SMark de Wever # endif 30*f49ccca8SMark de Wever 31*f49ccca8SMark de Wever #elif TEST_STD_VER == 14 32*f49ccca8SMark de Wever 33*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_cstring 34*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_cstring should not be defined before c++26" 35*f49ccca8SMark de Wever # endif 36*f49ccca8SMark de Wever 37*f49ccca8SMark de Wever #elif TEST_STD_VER == 17 38*f49ccca8SMark de Wever 39*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_cstring 40*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_cstring should not be defined before c++26" 41*f49ccca8SMark de Wever # endif 42*f49ccca8SMark de Wever 43*f49ccca8SMark de Wever #elif TEST_STD_VER == 20 44*f49ccca8SMark de Wever 45*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_cstring 46*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_cstring should not be defined before c++26" 47*f49ccca8SMark de Wever # endif 48*f49ccca8SMark de Wever 49*f49ccca8SMark de Wever #elif TEST_STD_VER == 23 50*f49ccca8SMark de Wever 51*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_cstring 52*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_cstring should not be defined before c++26" 53*f49ccca8SMark de Wever # endif 54*f49ccca8SMark de Wever 55*f49ccca8SMark de Wever #elif TEST_STD_VER > 23 56*f49ccca8SMark de Wever 57*f49ccca8SMark de Wever # if !defined(_LIBCPP_VERSION) 58*f49ccca8SMark de Wever # ifndef __cpp_lib_freestanding_cstring 59*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_cstring should be defined in c++26" 60*f49ccca8SMark de Wever # endif 61*f49ccca8SMark de Wever # if __cpp_lib_freestanding_cstring != 202306L 62*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_cstring should have the value 202306L in c++26" 63*f49ccca8SMark de Wever # endif 64*f49ccca8SMark de Wever # else // _LIBCPP_VERSION 65*f49ccca8SMark de Wever # ifdef __cpp_lib_freestanding_cstring 66*f49ccca8SMark de Wever # error "__cpp_lib_freestanding_cstring should not be defined because it is unimplemented in libc++!" 67*f49ccca8SMark de Wever # endif 68*f49ccca8SMark de Wever # endif 69*f49ccca8SMark de Wever 70*f49ccca8SMark de Wever #endif // TEST_STD_VER > 23 71*f49ccca8SMark de Wever 72