| // { dg-options "-std=gnu++23" } |
| // { dg-do compile { target c++23 } } |
| // { dg-require-normal-namespace "" } |
| |
| #include <expected> |
| |
| #ifndef __cpp_lib_expected |
| # error "Feature-test macro for expected missing in <expected>" |
| #elif __cpp_lib_expected != 202211L |
| # error "Feature-test macro for expected has wrong value in <expected>" |
| #endif |
| |
| namespace std |
| { |
| template<class E> class unexpected; |
| template<class E> class bad_expected_access; |
| template<> class bad_expected_access<void>; |
| struct unexpect_t; |
| extern inline const unexpect_t unexpect; |
| template<class T, class E> class expected; |
| template<class T, class E> requires is_void_v<T> class expected<T, E>; |
| } |