// -*- 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 module std;

// The headers of Table 24: C++ library headers [tab:headers.cpp]
// and the headers of Table 25: C++ headers for C library facilities [tab:headers.cpp.c]
export import :__new; // Note new is a keyword and not a valid identifier
export import :algorithm;
export import :any;
export import :array;
export import :atomic;
export import :barrier;
export import :bit;
export import :bitset;
export import :cassert;
export import :cctype;
export import :cerrno;
export import :cfenv;
export import :cfloat;
export import :charconv;
export import :chrono;
export import :cinttypes;
export import :climits;
export import :clocale;
export import :cmath;
export import :codecvt;
export import :compare;
export import :complex;
export import :concepts;
export import :condition_variable;
export import :coroutine;
export import :csetjmp;
export import :csignal;
export import :cstdarg;
export import :cstddef;
export import :cstdio;
export import :cstdlib;
export import :cstdint;
export import :cstring;
export import :ctime;
export import :cuchar;
export import :cwchar;
export import :cwctype;
export import :deque;
export import :exception;
export import :execution;
export import :expected;
export import :filesystem;
export import :flat_map;
export import :flat_set;
export import :format;
export import :forward_list;
export import :fstream;
export import :functional;
export import :future;
export import :generator;
export import :initializer_list;
export import :iomanip;
export import :ios;
export import :iosfwd;
export import :iostream;
export import :istream;
export import :iterator;
export import :latch;
export import :limits;
export import :list;
export import :locale;
export import :map;
export import :mdspan;
export import :memory;
export import :memory_resource;
export import :mutex;
export import :numbers;
export import :numeric;
export import :optional;
export import :ostream;
export import :print;
export import :queue;
export import :random;
export import :ranges;
export import :ratio;
export import :regex;
export import :scoped_allocator;
export import :semaphore;
export import :set;
export import :shared_mutex;
export import :source_location;
export import :span;
export import :spanstream;
export import :sstream;
export import :stack;
export import :stacktrace;
export import :stdexcept;
export import :stdfloat;
export import :stop_token;
export import :streambuf;
export import :string;
export import :string_view;
export import :strstream;
export import :syncstream;
export import :system_error;
export import :thread;
export import :tuple;
export import :type_traits;
export import :typeindex;
export import :typeinfo;
export import :unordered_map;
export import :unordered_set;
export import :utility;
export import :valarray;
export import :variant;
export import :vector;
export import :version;
