// -*- 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
//
//===----------------------------------------------------------------------===//

// WARNING, this entire header is generated by
// utils/generate_std_cppm_in.py
// DO NOT MODIFY!

module;

#include <__config>

// 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]
#include <algorithm>
#include <any>
#include <array>
#if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER)
#  include <atomic>
#endif
#if !defined(_LIBCPP_HAS_NO_THREADS)
#  include <barrier>
#endif
#include <bit>
#include <bitset>
#include <cassert>
#include <cctype>
#include <cerrno>
#include <cfenv>
#include <cfloat>
#include <charconv>
#include <chrono>
#include <cinttypes>
#include <climits>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <clocale>
#endif
#include <cmath>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <codecvt>
#endif
#include <compare>
#include <complex>
#include <concepts>
#include <condition_variable>
#include <coroutine>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <cuchar>
#if !defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
#  include <cwchar>
#endif
#if !defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
#  include <cwctype>
#endif
#include <deque>
#include <exception>
#include <execution>
#include <expected>
#include <filesystem>
#include <format>
#include <forward_list>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <fstream>
#endif
#include <functional>
#if !defined(_LIBCPP_HAS_NO_THREADS)
#  include <future>
#endif
#include <initializer_list>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <iomanip>
#endif
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <ios>
#endif
#include <iosfwd>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <iostream>
#endif
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <istream>
#endif
#include <iterator>
#if !defined(_LIBCPP_HAS_NO_THREADS)
#  include <latch>
#endif
#include <limits>
#include <list>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <locale>
#endif
#include <map>
#include <mdspan>
#include <memory>
#include <memory_resource>
#include <mutex>
#include <new>
#include <numbers>
#include <numeric>
#include <optional>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <ostream>
#endif
#include <print>
#include <queue>
#include <random>
#include <ranges>
#include <ratio>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <regex>
#endif
#include <scoped_allocator>
#if !defined(_LIBCPP_HAS_NO_THREADS)
#  include <semaphore>
#endif
#include <set>
#if !defined(_LIBCPP_HAS_NO_THREADS)
#  include <shared_mutex>
#endif
#include <source_location>
#include <span>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <sstream>
#endif
#include <stack>
#include <stdexcept>
#if !defined(_LIBCPP_HAS_NO_THREADS)
#  include <stop_token>
#endif
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <streambuf>
#endif
#include <string>
#include <string_view>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <strstream>
#endif
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
#  include <syncstream>
#endif
#include <system_error>
#if !defined(_LIBCPP_HAS_NO_THREADS)
#  include <thread>
#endif
#include <tuple>
#include <type_traits>
#include <typeindex>
#include <typeinfo>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <valarray>
#include <variant>
#include <vector>
#include <version>

// *** Headers not yet available ***
#if __has_include(<debugging>)
#  error "update the header information for <debugging> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<debugging>)
#if __has_include(<flat_map>)
#  error "update the header information for <flat_map> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<flat_map>)
#if __has_include(<flat_set>)
#  error "update the header information for <flat_set> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<flat_set>)
#if __has_include(<generator>)
#  error "update the header information for <generator> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<generator>)
#if __has_include(<hazard_pointer>)
#  error "update the header information for <hazard_pointer> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<hazard_pointer>)
#if __has_include(<linalg>)
#  error "update the header information for <linalg> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<linalg>)
#if __has_include(<rcu>)
#  error "update the header information for <rcu> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<rcu>)
#if __has_include(<spanstream>)
#  error "update the header information for <spanstream> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<spanstream>)
#if __has_include(<stacktrace>)
#  error "update the header information for <stacktrace> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<stacktrace>)
#if __has_include(<stdfloat>)
#  error "update the header information for <stdfloat> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<stdfloat>)
#if __has_include(<text_encoding>)
#  error "update the header information for <text_encoding> in libcxx/utils/generate_std_cppm_in.py"
#endif //   __has_include(<text_encoding>)

export module std;

@LIBCXX_MODULE_STD_INCLUDE_SOURCES@
