1*2c6217f2SLouis Dionne //===----------------------------------------------------------------------===// 2*2c6217f2SLouis Dionne // 3*2c6217f2SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2c6217f2SLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5*2c6217f2SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*2c6217f2SLouis Dionne // 7*2c6217f2SLouis Dionne //===----------------------------------------------------------------------===// 8*2c6217f2SLouis Dionne // 9*2c6217f2SLouis Dionne // WARNING: This test was generated by generate_feature_test_macro_components.py 10*2c6217f2SLouis Dionne // and should not be edited manually. 11*2c6217f2SLouis Dionne // 12*2c6217f2SLouis Dionne // clang-format off 13*2c6217f2SLouis Dionne 14*2c6217f2SLouis Dionne // <cmath> 15*2c6217f2SLouis Dionne 16*2c6217f2SLouis Dionne // Test the feature test macros defined by <cmath> 17*2c6217f2SLouis Dionne 18*2c6217f2SLouis Dionne /* Constant Value 19*2c6217f2SLouis Dionne __cpp_lib_constexpr_cmath 202202L [C++2b] 20*2c6217f2SLouis Dionne __cpp_lib_hypot 201603L [C++17] 21*2c6217f2SLouis Dionne __cpp_lib_interpolate 201902L [C++20] 22*2c6217f2SLouis Dionne __cpp_lib_math_special_functions 201603L [C++17] 23*2c6217f2SLouis Dionne */ 24*2c6217f2SLouis Dionne 25*2c6217f2SLouis Dionne #include <cmath> 26*2c6217f2SLouis Dionne #include "test_macros.h" 27*2c6217f2SLouis Dionne 28*2c6217f2SLouis Dionne #if TEST_STD_VER < 14 29*2c6217f2SLouis Dionne 30*2c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_cmath 31*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_cmath should not be defined before c++2b" 32*2c6217f2SLouis Dionne # endif 33*2c6217f2SLouis Dionne 34*2c6217f2SLouis Dionne # ifdef __cpp_lib_hypot 35*2c6217f2SLouis Dionne # error "__cpp_lib_hypot should not be defined before c++17" 36*2c6217f2SLouis Dionne # endif 37*2c6217f2SLouis Dionne 38*2c6217f2SLouis Dionne # ifdef __cpp_lib_interpolate 39*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should not be defined before c++20" 40*2c6217f2SLouis Dionne # endif 41*2c6217f2SLouis Dionne 42*2c6217f2SLouis Dionne # ifdef __cpp_lib_math_special_functions 43*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should not be defined before c++17" 44*2c6217f2SLouis Dionne # endif 45*2c6217f2SLouis Dionne 46*2c6217f2SLouis Dionne #elif TEST_STD_VER == 14 47*2c6217f2SLouis Dionne 48*2c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_cmath 49*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_cmath should not be defined before c++2b" 50*2c6217f2SLouis Dionne # endif 51*2c6217f2SLouis Dionne 52*2c6217f2SLouis Dionne # ifdef __cpp_lib_hypot 53*2c6217f2SLouis Dionne # error "__cpp_lib_hypot should not be defined before c++17" 54*2c6217f2SLouis Dionne # endif 55*2c6217f2SLouis Dionne 56*2c6217f2SLouis Dionne # ifdef __cpp_lib_interpolate 57*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should not be defined before c++20" 58*2c6217f2SLouis Dionne # endif 59*2c6217f2SLouis Dionne 60*2c6217f2SLouis Dionne # ifdef __cpp_lib_math_special_functions 61*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should not be defined before c++17" 62*2c6217f2SLouis Dionne # endif 63*2c6217f2SLouis Dionne 64*2c6217f2SLouis Dionne #elif TEST_STD_VER == 17 65*2c6217f2SLouis Dionne 66*2c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_cmath 67*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_cmath should not be defined before c++2b" 68*2c6217f2SLouis Dionne # endif 69*2c6217f2SLouis Dionne 70*2c6217f2SLouis Dionne # ifndef __cpp_lib_hypot 71*2c6217f2SLouis Dionne # error "__cpp_lib_hypot should be defined in c++17" 72*2c6217f2SLouis Dionne # endif 73*2c6217f2SLouis Dionne # if __cpp_lib_hypot != 201603L 74*2c6217f2SLouis Dionne # error "__cpp_lib_hypot should have the value 201603L in c++17" 75*2c6217f2SLouis Dionne # endif 76*2c6217f2SLouis Dionne 77*2c6217f2SLouis Dionne # ifdef __cpp_lib_interpolate 78*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should not be defined before c++20" 79*2c6217f2SLouis Dionne # endif 80*2c6217f2SLouis Dionne 81*2c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION) 82*2c6217f2SLouis Dionne # ifndef __cpp_lib_math_special_functions 83*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should be defined in c++17" 84*2c6217f2SLouis Dionne # endif 85*2c6217f2SLouis Dionne # if __cpp_lib_math_special_functions != 201603L 86*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should have the value 201603L in c++17" 87*2c6217f2SLouis Dionne # endif 88*2c6217f2SLouis Dionne # else // _LIBCPP_VERSION 89*2c6217f2SLouis Dionne # ifdef __cpp_lib_math_special_functions 90*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!" 91*2c6217f2SLouis Dionne # endif 92*2c6217f2SLouis Dionne # endif 93*2c6217f2SLouis Dionne 94*2c6217f2SLouis Dionne #elif TEST_STD_VER == 20 95*2c6217f2SLouis Dionne 96*2c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_cmath 97*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_cmath should not be defined before c++2b" 98*2c6217f2SLouis Dionne # endif 99*2c6217f2SLouis Dionne 100*2c6217f2SLouis Dionne # ifndef __cpp_lib_hypot 101*2c6217f2SLouis Dionne # error "__cpp_lib_hypot should be defined in c++20" 102*2c6217f2SLouis Dionne # endif 103*2c6217f2SLouis Dionne # if __cpp_lib_hypot != 201603L 104*2c6217f2SLouis Dionne # error "__cpp_lib_hypot should have the value 201603L in c++20" 105*2c6217f2SLouis Dionne # endif 106*2c6217f2SLouis Dionne 107*2c6217f2SLouis Dionne # ifndef __cpp_lib_interpolate 108*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should be defined in c++20" 109*2c6217f2SLouis Dionne # endif 110*2c6217f2SLouis Dionne # if __cpp_lib_interpolate != 201902L 111*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should have the value 201902L in c++20" 112*2c6217f2SLouis Dionne # endif 113*2c6217f2SLouis Dionne 114*2c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION) 115*2c6217f2SLouis Dionne # ifndef __cpp_lib_math_special_functions 116*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should be defined in c++20" 117*2c6217f2SLouis Dionne # endif 118*2c6217f2SLouis Dionne # if __cpp_lib_math_special_functions != 201603L 119*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should have the value 201603L in c++20" 120*2c6217f2SLouis Dionne # endif 121*2c6217f2SLouis Dionne # else // _LIBCPP_VERSION 122*2c6217f2SLouis Dionne # ifdef __cpp_lib_math_special_functions 123*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!" 124*2c6217f2SLouis Dionne # endif 125*2c6217f2SLouis Dionne # endif 126*2c6217f2SLouis Dionne 127*2c6217f2SLouis Dionne #elif TEST_STD_VER > 20 128*2c6217f2SLouis Dionne 129*2c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION) 130*2c6217f2SLouis Dionne # ifndef __cpp_lib_constexpr_cmath 131*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_cmath should be defined in c++2b" 132*2c6217f2SLouis Dionne # endif 133*2c6217f2SLouis Dionne # if __cpp_lib_constexpr_cmath != 202202L 134*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_cmath should have the value 202202L in c++2b" 135*2c6217f2SLouis Dionne # endif 136*2c6217f2SLouis Dionne # else // _LIBCPP_VERSION 137*2c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_cmath 138*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_cmath should not be defined because it is unimplemented in libc++!" 139*2c6217f2SLouis Dionne # endif 140*2c6217f2SLouis Dionne # endif 141*2c6217f2SLouis Dionne 142*2c6217f2SLouis Dionne # ifndef __cpp_lib_hypot 143*2c6217f2SLouis Dionne # error "__cpp_lib_hypot should be defined in c++2b" 144*2c6217f2SLouis Dionne # endif 145*2c6217f2SLouis Dionne # if __cpp_lib_hypot != 201603L 146*2c6217f2SLouis Dionne # error "__cpp_lib_hypot should have the value 201603L in c++2b" 147*2c6217f2SLouis Dionne # endif 148*2c6217f2SLouis Dionne 149*2c6217f2SLouis Dionne # ifndef __cpp_lib_interpolate 150*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should be defined in c++2b" 151*2c6217f2SLouis Dionne # endif 152*2c6217f2SLouis Dionne # if __cpp_lib_interpolate != 201902L 153*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should have the value 201902L in c++2b" 154*2c6217f2SLouis Dionne # endif 155*2c6217f2SLouis Dionne 156*2c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION) 157*2c6217f2SLouis Dionne # ifndef __cpp_lib_math_special_functions 158*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should be defined in c++2b" 159*2c6217f2SLouis Dionne # endif 160*2c6217f2SLouis Dionne # if __cpp_lib_math_special_functions != 201603L 161*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should have the value 201603L in c++2b" 162*2c6217f2SLouis Dionne # endif 163*2c6217f2SLouis Dionne # else // _LIBCPP_VERSION 164*2c6217f2SLouis Dionne # ifdef __cpp_lib_math_special_functions 165*2c6217f2SLouis Dionne # error "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!" 166*2c6217f2SLouis Dionne # endif 167*2c6217f2SLouis Dionne # endif 168*2c6217f2SLouis Dionne 169*2c6217f2SLouis Dionne #endif // TEST_STD_VER > 20 170*2c6217f2SLouis Dionne 171