// -*- 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 {
#if _LIBCPP_STD_VER >= 23
  // [flat.set], class template flat_­set
  using std::flat_set;

  using std::sorted_unique;
  using std::sorted_unique_t;

  using std::uses_allocator;

  // [flat.set.erasure], erasure for flat_­set
  using std::erase_if;

  // [flat.multiset], class template flat_­multiset
  using std::flat_multiset;

  using std::sorted_equivalent;
  using std::sorted_equivalent_t;
#endif // _LIBCPP_STD_VER >= 23
} // namespace std
