1// -*- C++ -*- 2//===----------------------------------------------------------------------===// 3// 4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5// See https://llvm.org/LICENSE.txt for license information. 6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef _LIBCPP_EXPECTED 11#define _LIBCPP_EXPECTED 12 13/* 14 Header <expected> synopsis 15 16namespace std { 17 // [expected.unexpected], class template unexpected 18 template<class E> class unexpected; 19 20 // [expected.bad], class template bad_expected_access 21 template<class E> class bad_expected_access; 22 23 // [expected.bad.void], specialization for void 24 template<> class bad_expected_access<void>; 25 26 // in-place construction of unexpected values 27 struct unexpect_t { 28 explicit unexpect_t() = default; 29 }; 30 inline constexpr unexpect_t unexpect{}; 31 32 // [expected.expected], class template expected 33 template<class T, class E> class expected; 34 35 // [expected.void], partial specialization of expected for void types 36 template<class T, class E> requires is_void_v<T> class expected<T, E>; 37} 38 39*/ 40 41#include <__config> 42 43#if _LIBCPP_STD_VER >= 23 44# include <__expected/bad_expected_access.h> 45# include <__expected/expected.h> 46# include <__expected/unexpect.h> 47# include <__expected/unexpected.h> 48#endif 49 50#include <version> 51 52#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 53# pragma GCC system_header 54#endif 55 56#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 57# include <cstddef> 58# include <initializer_list> 59# include <new> 60#endif 61 62#endif // _LIBCPP_EXPECTED 63