William Tran-Viet 1c51886920
[libc++] Implement P3168R2: Give optional range support (#149441)
Resolves #105430

- Implement all required pieces of P3168R2
- Leverage existing `wrap_iter` and `bounded_iter` classes to implement
the `optional` regular and hardened iterator type, respectively
- Update documentation to match
2025-08-18 18:04:45 +03:00

47 lines
1.2 KiB
C++

// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
export namespace std {
// [optional.optional], class template optional
using std::optional;
#if _LIBCPP_STD_VER >= 26
// [optional.iterators], iterator support
namespace ranges {
using std::ranges::enable_view;
}
#endif
// [optional.nullopt], no-value state indicator
using std::nullopt;
using std::nullopt_t;
// [optional.bad.access], class bad_optional_access
using std::bad_optional_access;
#if _LIBCPP_STD_VER >= 26
using std::format_kind;
#endif
// [optional.relops], relational operators
using std::operator==;
using std::operator!=;
using std::operator<;
using std::operator>;
using std::operator<=;
using std::operator>=;
using std::operator<=>;
// [optional.specalg], specialized algorithms
using std::swap;
using std::make_optional;
// [optional.hash], hash support
using std::hash;
} // namespace std