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

source code of libcxx/test/std/language.support/support.limits/support.limits.general/expected.version.compile.pass.cpp