// -*- 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 0
  // [flat.map], class template flat_­map
  using std::flat_map;

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

  using std::uses_allocator;

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

  // [flat.multimap], class template flat_­multimap
  using std::flat_multimap;

  using std::sorted_equivalent;
  using std::sorted_equivalent_t;

  // [flat.multimap.erasure], erasure for flat_­multimap
#endif
} // namespace std
