// -*- 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 {
  using std::FILE _LIBCPP_USING_IF_EXISTS;
  using std::fpos_t _LIBCPP_USING_IF_EXISTS;
  using std::size_t _LIBCPP_USING_IF_EXISTS;

  using std::clearerr _LIBCPP_USING_IF_EXISTS;
  using std::fclose _LIBCPP_USING_IF_EXISTS;
  using std::feof _LIBCPP_USING_IF_EXISTS;
  using std::ferror _LIBCPP_USING_IF_EXISTS;
  using std::fflush _LIBCPP_USING_IF_EXISTS;
  using std::fgetc _LIBCPP_USING_IF_EXISTS;
  using std::fgetpos _LIBCPP_USING_IF_EXISTS;
  using std::fgets _LIBCPP_USING_IF_EXISTS;
  using std::fopen _LIBCPP_USING_IF_EXISTS;
  using std::fprintf _LIBCPP_USING_IF_EXISTS;
  using std::fputc _LIBCPP_USING_IF_EXISTS;
  using std::fputs _LIBCPP_USING_IF_EXISTS;
  using std::fread _LIBCPP_USING_IF_EXISTS;
  using std::freopen _LIBCPP_USING_IF_EXISTS;
  using std::fscanf _LIBCPP_USING_IF_EXISTS;
  using std::fseek _LIBCPP_USING_IF_EXISTS;
  using std::fsetpos _LIBCPP_USING_IF_EXISTS;
  using std::ftell _LIBCPP_USING_IF_EXISTS;
  using std::fwrite _LIBCPP_USING_IF_EXISTS;
  using std::getc _LIBCPP_USING_IF_EXISTS;
  using std::getchar _LIBCPP_USING_IF_EXISTS;
  using std::perror _LIBCPP_USING_IF_EXISTS;
  using std::printf _LIBCPP_USING_IF_EXISTS;
  using std::putc _LIBCPP_USING_IF_EXISTS;
  using std::putchar _LIBCPP_USING_IF_EXISTS;
  using std::puts _LIBCPP_USING_IF_EXISTS;
  using std::remove _LIBCPP_USING_IF_EXISTS;
  using std::rename _LIBCPP_USING_IF_EXISTS;
  using std::rewind _LIBCPP_USING_IF_EXISTS;
  using std::scanf _LIBCPP_USING_IF_EXISTS;
  using std::setbuf _LIBCPP_USING_IF_EXISTS;
  using std::setvbuf _LIBCPP_USING_IF_EXISTS;
  using std::snprintf _LIBCPP_USING_IF_EXISTS;
  using std::sprintf _LIBCPP_USING_IF_EXISTS;
  using std::sscanf _LIBCPP_USING_IF_EXISTS;
  using std::tmpfile _LIBCPP_USING_IF_EXISTS;
  using std::tmpnam _LIBCPP_USING_IF_EXISTS;
  using std::ungetc _LIBCPP_USING_IF_EXISTS;
  using std::vfprintf _LIBCPP_USING_IF_EXISTS;
  using std::vfscanf _LIBCPP_USING_IF_EXISTS;
  using std::vprintf _LIBCPP_USING_IF_EXISTS;
  using std::vscanf _LIBCPP_USING_IF_EXISTS;
  using std::vsnprintf _LIBCPP_USING_IF_EXISTS;
  using std::vsprintf _LIBCPP_USING_IF_EXISTS;
  using std::vsscanf _LIBCPP_USING_IF_EXISTS;
} // namespace std
