1b699a9baSLouis Dionne //===----------------------------------------------------------------------===// 2b699a9baSLouis Dionne // 3b699a9baSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4b699a9baSLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5b699a9baSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6b699a9baSLouis Dionne // 7b699a9baSLouis Dionne //===----------------------------------------------------------------------===// 8b699a9baSLouis Dionne // 9b699a9baSLouis Dionne // WARNING: This test was generated by generate_feature_test_macro_components.py 10b699a9baSLouis Dionne // and should not be edited manually. 11b699a9baSLouis Dionne // 12b699a9baSLouis Dionne // clang-format off 13b699a9baSLouis Dionne 14b699a9baSLouis Dionne // <random> 15b699a9baSLouis Dionne 16b699a9baSLouis Dionne // Test the feature test macros defined by <random> 17b699a9baSLouis Dionne 18b699a9baSLouis Dionne /* Constant Value 19b699a9baSLouis Dionne __cpp_lib_generate_random 202403L [C++26] 20*2dadf8d7SMark de Wever __cpp_lib_philox_engine 202406L [C++26] 21b699a9baSLouis Dionne */ 22b699a9baSLouis Dionne 23b699a9baSLouis Dionne #include <random> 24b699a9baSLouis Dionne #include "test_macros.h" 25b699a9baSLouis Dionne 26b699a9baSLouis Dionne #if TEST_STD_VER < 14 27b699a9baSLouis Dionne 28b699a9baSLouis Dionne # ifdef __cpp_lib_generate_random 29b699a9baSLouis Dionne # error "__cpp_lib_generate_random should not be defined before c++26" 30b699a9baSLouis Dionne # endif 31b699a9baSLouis Dionne 32*2dadf8d7SMark de Wever # ifdef __cpp_lib_philox_engine 33*2dadf8d7SMark de Wever # error "__cpp_lib_philox_engine should not be defined before c++26" 34*2dadf8d7SMark de Wever # endif 35*2dadf8d7SMark de Wever 36b699a9baSLouis Dionne #elif TEST_STD_VER == 14 37b699a9baSLouis Dionne 38b699a9baSLouis Dionne # ifdef __cpp_lib_generate_random 39b699a9baSLouis Dionne # error "__cpp_lib_generate_random should not be defined before c++26" 40b699a9baSLouis Dionne # endif 41b699a9baSLouis Dionne 42*2dadf8d7SMark de Wever # ifdef __cpp_lib_philox_engine 43*2dadf8d7SMark de Wever # error "__cpp_lib_philox_engine should not be defined before c++26" 44*2dadf8d7SMark de Wever # endif 45*2dadf8d7SMark de Wever 46b699a9baSLouis Dionne #elif TEST_STD_VER == 17 47b699a9baSLouis Dionne 48b699a9baSLouis Dionne # ifdef __cpp_lib_generate_random 49b699a9baSLouis Dionne # error "__cpp_lib_generate_random should not be defined before c++26" 50b699a9baSLouis Dionne # endif 51b699a9baSLouis Dionne 52*2dadf8d7SMark de Wever # ifdef __cpp_lib_philox_engine 53*2dadf8d7SMark de Wever # error "__cpp_lib_philox_engine should not be defined before c++26" 54*2dadf8d7SMark de Wever # endif 55*2dadf8d7SMark de Wever 56b699a9baSLouis Dionne #elif TEST_STD_VER == 20 57b699a9baSLouis Dionne 58b699a9baSLouis Dionne # ifdef __cpp_lib_generate_random 59b699a9baSLouis Dionne # error "__cpp_lib_generate_random should not be defined before c++26" 60b699a9baSLouis Dionne # endif 61b699a9baSLouis Dionne 62*2dadf8d7SMark de Wever # ifdef __cpp_lib_philox_engine 63*2dadf8d7SMark de Wever # error "__cpp_lib_philox_engine should not be defined before c++26" 64*2dadf8d7SMark de Wever # endif 65*2dadf8d7SMark de Wever 66b699a9baSLouis Dionne #elif TEST_STD_VER == 23 67b699a9baSLouis Dionne 68b699a9baSLouis Dionne # ifdef __cpp_lib_generate_random 69b699a9baSLouis Dionne # error "__cpp_lib_generate_random should not be defined before c++26" 70b699a9baSLouis Dionne # endif 71b699a9baSLouis Dionne 72*2dadf8d7SMark de Wever # ifdef __cpp_lib_philox_engine 73*2dadf8d7SMark de Wever # error "__cpp_lib_philox_engine should not be defined before c++26" 74*2dadf8d7SMark de Wever # endif 75*2dadf8d7SMark de Wever 76b699a9baSLouis Dionne #elif TEST_STD_VER > 23 77b699a9baSLouis Dionne 78b699a9baSLouis Dionne # if !defined(_LIBCPP_VERSION) 79b699a9baSLouis Dionne # ifndef __cpp_lib_generate_random 80b699a9baSLouis Dionne # error "__cpp_lib_generate_random should be defined in c++26" 81b699a9baSLouis Dionne # endif 82b699a9baSLouis Dionne # if __cpp_lib_generate_random != 202403L 83b699a9baSLouis Dionne # error "__cpp_lib_generate_random should have the value 202403L in c++26" 84b699a9baSLouis Dionne # endif 85b699a9baSLouis Dionne # else // _LIBCPP_VERSION 86b699a9baSLouis Dionne # ifdef __cpp_lib_generate_random 87b699a9baSLouis Dionne # error "__cpp_lib_generate_random should not be defined because it is unimplemented in libc++!" 88b699a9baSLouis Dionne # endif 89b699a9baSLouis Dionne # endif 90b699a9baSLouis Dionne 91*2dadf8d7SMark de Wever # if !defined(_LIBCPP_VERSION) 92*2dadf8d7SMark de Wever # ifndef __cpp_lib_philox_engine 93*2dadf8d7SMark de Wever # error "__cpp_lib_philox_engine should be defined in c++26" 94*2dadf8d7SMark de Wever # endif 95*2dadf8d7SMark de Wever # if __cpp_lib_philox_engine != 202406L 96*2dadf8d7SMark de Wever # error "__cpp_lib_philox_engine should have the value 202406L in c++26" 97*2dadf8d7SMark de Wever # endif 98*2dadf8d7SMark de Wever # else // _LIBCPP_VERSION 99*2dadf8d7SMark de Wever # ifdef __cpp_lib_philox_engine 100*2dadf8d7SMark de Wever # error "__cpp_lib_philox_engine should not be defined because it is unimplemented in libc++!" 101*2dadf8d7SMark de Wever # endif 102*2dadf8d7SMark de Wever # endif 103*2dadf8d7SMark de Wever 104b699a9baSLouis Dionne #endif // TEST_STD_VER > 23 105b699a9baSLouis Dionne 106