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 // <numeric> 15*2c6217f2SLouis Dionne 16*2c6217f2SLouis Dionne // Test the feature test macros defined by <numeric> 17*2c6217f2SLouis Dionne 18*2c6217f2SLouis Dionne /* Constant Value 19*2c6217f2SLouis Dionne __cpp_lib_constexpr_numeric 201911L [C++20] 20*2c6217f2SLouis Dionne __cpp_lib_gcd_lcm 201606L [C++17] 21*2c6217f2SLouis Dionne __cpp_lib_interpolate 201902L [C++20] 22*2c6217f2SLouis Dionne __cpp_lib_parallel_algorithm 201603L [C++17] 23*2c6217f2SLouis Dionne __cpp_lib_ranges_iota 202202L [C++2b] 24*2c6217f2SLouis Dionne */ 25*2c6217f2SLouis Dionne 26*2c6217f2SLouis Dionne #include <numeric> 27*2c6217f2SLouis Dionne #include "test_macros.h" 28*2c6217f2SLouis Dionne 29*2c6217f2SLouis Dionne #if TEST_STD_VER < 14 30*2c6217f2SLouis Dionne 31*2c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_numeric 32*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_numeric should not be defined before c++20" 33*2c6217f2SLouis Dionne # endif 34*2c6217f2SLouis Dionne 35*2c6217f2SLouis Dionne # ifdef __cpp_lib_gcd_lcm 36*2c6217f2SLouis Dionne # error "__cpp_lib_gcd_lcm should not be defined before c++17" 37*2c6217f2SLouis Dionne # endif 38*2c6217f2SLouis Dionne 39*2c6217f2SLouis Dionne # ifdef __cpp_lib_interpolate 40*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should not be defined before c++20" 41*2c6217f2SLouis Dionne # endif 42*2c6217f2SLouis Dionne 43*2c6217f2SLouis Dionne # ifdef __cpp_lib_parallel_algorithm 44*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should not be defined before c++17" 45*2c6217f2SLouis Dionne # endif 46*2c6217f2SLouis Dionne 47*2c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_iota 48*2c6217f2SLouis Dionne # error "__cpp_lib_ranges_iota should not be defined before c++2b" 49*2c6217f2SLouis Dionne # endif 50*2c6217f2SLouis Dionne 51*2c6217f2SLouis Dionne #elif TEST_STD_VER == 14 52*2c6217f2SLouis Dionne 53*2c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_numeric 54*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_numeric should not be defined before c++20" 55*2c6217f2SLouis Dionne # endif 56*2c6217f2SLouis Dionne 57*2c6217f2SLouis Dionne # ifdef __cpp_lib_gcd_lcm 58*2c6217f2SLouis Dionne # error "__cpp_lib_gcd_lcm should not be defined before c++17" 59*2c6217f2SLouis Dionne # endif 60*2c6217f2SLouis Dionne 61*2c6217f2SLouis Dionne # ifdef __cpp_lib_interpolate 62*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should not be defined before c++20" 63*2c6217f2SLouis Dionne # endif 64*2c6217f2SLouis Dionne 65*2c6217f2SLouis Dionne # ifdef __cpp_lib_parallel_algorithm 66*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should not be defined before c++17" 67*2c6217f2SLouis Dionne # endif 68*2c6217f2SLouis Dionne 69*2c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_iota 70*2c6217f2SLouis Dionne # error "__cpp_lib_ranges_iota should not be defined before c++2b" 71*2c6217f2SLouis Dionne # endif 72*2c6217f2SLouis Dionne 73*2c6217f2SLouis Dionne #elif TEST_STD_VER == 17 74*2c6217f2SLouis Dionne 75*2c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_numeric 76*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_numeric should not be defined before c++20" 77*2c6217f2SLouis Dionne # endif 78*2c6217f2SLouis Dionne 79*2c6217f2SLouis Dionne # ifndef __cpp_lib_gcd_lcm 80*2c6217f2SLouis Dionne # error "__cpp_lib_gcd_lcm should be defined in c++17" 81*2c6217f2SLouis Dionne # endif 82*2c6217f2SLouis Dionne # if __cpp_lib_gcd_lcm != 201606L 83*2c6217f2SLouis Dionne # error "__cpp_lib_gcd_lcm should have the value 201606L in c++17" 84*2c6217f2SLouis Dionne # endif 85*2c6217f2SLouis Dionne 86*2c6217f2SLouis Dionne # ifdef __cpp_lib_interpolate 87*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should not be defined before c++20" 88*2c6217f2SLouis Dionne # endif 89*2c6217f2SLouis Dionne 90*2c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION) 91*2c6217f2SLouis Dionne # ifndef __cpp_lib_parallel_algorithm 92*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should be defined in c++17" 93*2c6217f2SLouis Dionne # endif 94*2c6217f2SLouis Dionne # if __cpp_lib_parallel_algorithm != 201603L 95*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should have the value 201603L in c++17" 96*2c6217f2SLouis Dionne # endif 97*2c6217f2SLouis Dionne # else // _LIBCPP_VERSION 98*2c6217f2SLouis Dionne # ifdef __cpp_lib_parallel_algorithm 99*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!" 100*2c6217f2SLouis Dionne # endif 101*2c6217f2SLouis Dionne # endif 102*2c6217f2SLouis Dionne 103*2c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_iota 104*2c6217f2SLouis Dionne # error "__cpp_lib_ranges_iota should not be defined before c++2b" 105*2c6217f2SLouis Dionne # endif 106*2c6217f2SLouis Dionne 107*2c6217f2SLouis Dionne #elif TEST_STD_VER == 20 108*2c6217f2SLouis Dionne 109*2c6217f2SLouis Dionne # ifndef __cpp_lib_constexpr_numeric 110*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_numeric should be defined in c++20" 111*2c6217f2SLouis Dionne # endif 112*2c6217f2SLouis Dionne # if __cpp_lib_constexpr_numeric != 201911L 113*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_numeric should have the value 201911L in c++20" 114*2c6217f2SLouis Dionne # endif 115*2c6217f2SLouis Dionne 116*2c6217f2SLouis Dionne # ifndef __cpp_lib_gcd_lcm 117*2c6217f2SLouis Dionne # error "__cpp_lib_gcd_lcm should be defined in c++20" 118*2c6217f2SLouis Dionne # endif 119*2c6217f2SLouis Dionne # if __cpp_lib_gcd_lcm != 201606L 120*2c6217f2SLouis Dionne # error "__cpp_lib_gcd_lcm should have the value 201606L in c++20" 121*2c6217f2SLouis Dionne # endif 122*2c6217f2SLouis Dionne 123*2c6217f2SLouis Dionne # ifndef __cpp_lib_interpolate 124*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should be defined in c++20" 125*2c6217f2SLouis Dionne # endif 126*2c6217f2SLouis Dionne # if __cpp_lib_interpolate != 201902L 127*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should have the value 201902L in c++20" 128*2c6217f2SLouis Dionne # endif 129*2c6217f2SLouis Dionne 130*2c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION) 131*2c6217f2SLouis Dionne # ifndef __cpp_lib_parallel_algorithm 132*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should be defined in c++20" 133*2c6217f2SLouis Dionne # endif 134*2c6217f2SLouis Dionne # if __cpp_lib_parallel_algorithm != 201603L 135*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should have the value 201603L in c++20" 136*2c6217f2SLouis Dionne # endif 137*2c6217f2SLouis Dionne # else // _LIBCPP_VERSION 138*2c6217f2SLouis Dionne # ifdef __cpp_lib_parallel_algorithm 139*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!" 140*2c6217f2SLouis Dionne # endif 141*2c6217f2SLouis Dionne # endif 142*2c6217f2SLouis Dionne 143*2c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_iota 144*2c6217f2SLouis Dionne # error "__cpp_lib_ranges_iota should not be defined before c++2b" 145*2c6217f2SLouis Dionne # endif 146*2c6217f2SLouis Dionne 147*2c6217f2SLouis Dionne #elif TEST_STD_VER > 20 148*2c6217f2SLouis Dionne 149*2c6217f2SLouis Dionne # ifndef __cpp_lib_constexpr_numeric 150*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_numeric should be defined in c++2b" 151*2c6217f2SLouis Dionne # endif 152*2c6217f2SLouis Dionne # if __cpp_lib_constexpr_numeric != 201911L 153*2c6217f2SLouis Dionne # error "__cpp_lib_constexpr_numeric should have the value 201911L in c++2b" 154*2c6217f2SLouis Dionne # endif 155*2c6217f2SLouis Dionne 156*2c6217f2SLouis Dionne # ifndef __cpp_lib_gcd_lcm 157*2c6217f2SLouis Dionne # error "__cpp_lib_gcd_lcm should be defined in c++2b" 158*2c6217f2SLouis Dionne # endif 159*2c6217f2SLouis Dionne # if __cpp_lib_gcd_lcm != 201606L 160*2c6217f2SLouis Dionne # error "__cpp_lib_gcd_lcm should have the value 201606L in c++2b" 161*2c6217f2SLouis Dionne # endif 162*2c6217f2SLouis Dionne 163*2c6217f2SLouis Dionne # ifndef __cpp_lib_interpolate 164*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should be defined in c++2b" 165*2c6217f2SLouis Dionne # endif 166*2c6217f2SLouis Dionne # if __cpp_lib_interpolate != 201902L 167*2c6217f2SLouis Dionne # error "__cpp_lib_interpolate should have the value 201902L in c++2b" 168*2c6217f2SLouis Dionne # endif 169*2c6217f2SLouis Dionne 170*2c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION) 171*2c6217f2SLouis Dionne # ifndef __cpp_lib_parallel_algorithm 172*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should be defined in c++2b" 173*2c6217f2SLouis Dionne # endif 174*2c6217f2SLouis Dionne # if __cpp_lib_parallel_algorithm != 201603L 175*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should have the value 201603L in c++2b" 176*2c6217f2SLouis Dionne # endif 177*2c6217f2SLouis Dionne # else // _LIBCPP_VERSION 178*2c6217f2SLouis Dionne # ifdef __cpp_lib_parallel_algorithm 179*2c6217f2SLouis Dionne # error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!" 180*2c6217f2SLouis Dionne # endif 181*2c6217f2SLouis Dionne # endif 182*2c6217f2SLouis Dionne 183*2c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION) 184*2c6217f2SLouis Dionne # ifndef __cpp_lib_ranges_iota 185*2c6217f2SLouis Dionne # error "__cpp_lib_ranges_iota should be defined in c++2b" 186*2c6217f2SLouis Dionne # endif 187*2c6217f2SLouis Dionne # if __cpp_lib_ranges_iota != 202202L 188*2c6217f2SLouis Dionne # error "__cpp_lib_ranges_iota should have the value 202202L in c++2b" 189*2c6217f2SLouis Dionne # endif 190*2c6217f2SLouis Dionne # else // _LIBCPP_VERSION 191*2c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_iota 192*2c6217f2SLouis Dionne # error "__cpp_lib_ranges_iota should not be defined because it is unimplemented in libc++!" 193*2c6217f2SLouis Dionne # endif 194*2c6217f2SLouis Dionne # endif 195*2c6217f2SLouis Dionne 196*2c6217f2SLouis Dionne #endif // TEST_STD_VER > 20 197*2c6217f2SLouis Dionne 198