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