[libc++] Alphabetize and include-what-you-use. NFCI.

Differential Revision: https://reviews.llvm.org/D102781
This commit is contained in:
Arthur O'Dwyer
2021-05-19 11:57:04 -04:00
parent c9385297ce
commit bfbd73f87d
59 changed files with 168 additions and 183 deletions

View File

@@ -11,10 +11,10 @@
#define _LIBCPP_FUNCTIONAL_BASE
#include <__config>
#include <type_traits>
#include <typeinfo>
#include <exception>
#include <new>
#include <type_traits>
#include <typeinfo>
#include <utility>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -10,16 +10,16 @@
#ifndef _LIBCPP__HASH_TABLE
#define _LIBCPP__HASH_TABLE
#include <__bits> // __libcpp_clz
#include <__config>
#include <initializer_list>
#include <memory>
#include <iterator>
#include <__debug>
#include <algorithm>
#include <cmath>
#include <utility>
#include <initializer_list>
#include <iterator>
#include <memory>
#include <type_traits>
#include <__debug>
#include <utility>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -10,8 +10,8 @@
#ifndef _LIBCPP___LOCALE
#define _LIBCPP___LOCALE
#include <__config>
#include <__availability>
#include <__config>
#include <string>
#include <memory>
#include <utility>

View File

@@ -11,10 +11,9 @@
#define _LIBCPP___MUTEX_BASE
#include <__config>
#include <__threading_support>
#include <chrono>
#include <system_error>
#include <__threading_support>
#include <time.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -3,8 +3,8 @@
#define _LIBCPP_SPLIT_BUFFER
#include <__config>
#include <type_traits>
#include <algorithm>
#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -11,10 +11,10 @@
#define _LIBCPP___STD_STREAM
#include <__config>
#include <ostream>
#include <istream>
#include <__locale>
#include <cstdio>
#include <istream>
#include <ostream>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -10,11 +10,11 @@
#ifndef _LIBCPP_THREADING_SUPPORT
#define _LIBCPP_THREADING_SUPPORT
#include <__config>
#include <__availability>
#include <__config>
#include <chrono>
#include <iosfwd>
#include <errno.h>
#include <iosfwd>
#include <limits>
#ifdef __MVS__

View File

@@ -11,10 +11,10 @@
#define _LIBCPP___TREE
#include <__config>
#include <algorithm>
#include <iterator>
#include <memory>
#include <stdexcept>
#include <algorithm>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -646,15 +646,15 @@ template <class BidirectionalIterator, class Compare>
*/
#include <__config>
#include <initializer_list>
#include <type_traits>
#include <cstring>
#include <utility> // needed to provide swap_ranges.
#include <memory>
#include <functional>
#include <iterator>
#include <__bits> // __libcpp_clz
#include <cstddef>
#include <bit>
#include <cstring>
#include <functional>
#include <initializer_list>
#include <iterator>
#include <memory>
#include <type_traits>
#include <utility> // swap_ranges
#include <version>
#include <__debug>

View File

@@ -80,12 +80,12 @@ namespace std {
*/
#include <__config>
#include <__availability>
#include <memory>
#include <typeinfo>
#include <type_traits>
#include <__config>
#include <cstdlib>
#include <memory>
#include <type_traits>
#include <typeinfo>
#include <version>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -109,25 +109,22 @@ template <size_t I, class T, size_t N> const T&& get(const array<T, N>&&) noexce
*/
#include <__config>
#include <__debug>
#include <__tuple>
#include <algorithm>
#include <cstdlib> // for _LIBCPP_UNREACHABLE
#include <iterator>
#include <stdexcept>
#include <type_traits>
#include <utility>
#include <iterator>
#include <algorithm>
#include <stdexcept>
#include <cstdlib> // for _LIBCPP_UNREACHABLE
#include <version>
#include <__debug>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif
_LIBCPP_BEGIN_NAMESPACE_STD
template <class _Tp, size_t _Size>
struct _LIBCPP_TEMPLATE_VIS array
{

View File

@@ -574,8 +574,8 @@ template <class T>
*/
#include <__config>
#include <__availability>
#include <__config>
#include <__threading_support>
#include <cstddef>
#include <cstdint>

View File

@@ -45,8 +45,8 @@ namespace std
*/
#include <__config>
#include <__availability>
#include <__config>
#include <atomic>
#ifndef _LIBCPP_HAS_NO_TREE_BARRIER
# include <memory>

View File

@@ -55,7 +55,7 @@ namespace std {
*/
#include <__config>
#include <__bits>
#include <__bits> // __libcpp_clz
#include <__debug>
#include <limits>
#include <type_traits>

View File

@@ -114,12 +114,12 @@ template <size_t N> struct hash<std::bitset<N>>;
#include <__config>
#include <__bit_reference>
#include <cstddef>
#include <climits>
#include <string>
#include <stdexcept>
#include <iosfwd>
#include <__functional_base>
#include <climits>
#include <cstddef>
#include <iosfwd>
#include <stdexcept>
#include <string>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -73,8 +73,8 @@ namespace std {
*/
#include <__config>
#include <__availability>
#include <__config>
#include <__errc>
#include <__utility/to_underlying.h>
#include <cmath> // for log2f

View File

@@ -823,13 +823,13 @@ constexpr chrono::year operator ""y(unsigned lo
} // std
*/
#include <__config>
#include <__availability>
#include <__config>
#include <compare>
#include <ctime>
#include <type_traits>
#include <ratio>
#include <limits>
#include <ratio>
#include <type_traits>
#include <version>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -232,10 +232,10 @@ template<class T> complex<T> tanh (const complex<T>&);
*/
#include <__config>
#include <type_traits>
#include <stdexcept>
#include <cmath>
#include <iosfwd>
#include <stdexcept>
#include <type_traits>
#include <version>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)

View File

@@ -76,8 +76,8 @@ template <class E> void rethrow_if_nested(const E& e);
*/
#include <__config>
#include <__availability>
#include <__config>
#include <__memory/addressof.h>
#include <cstddef>
#include <cstdlib>

View File

@@ -229,20 +229,21 @@
*/
#include <__config>
#include <__availability>
#include <cstddef>
#include <cstdlib>
#include <__config>
#include <__debug>
#include <chrono>
#include <compare>
#include <iterator>
#include <cstddef>
#include <cstdlib>
#include <iosfwd>
#include <iterator>
#include <memory>
#include <stack>
#include <string>
#include <string_view>
#include <system_error>
#include <utility>
#include <string_view>
#include <version>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
@@ -250,8 +251,6 @@
# include <iomanip> // for quoted
#endif
#include <__debug>
#if defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
# error "The Filesystem library is not supported by this configuration of libc++"
#endif

View File

@@ -180,11 +180,11 @@ template <class T, class Allocator, class Predicate>
*/
#include <__config>
#include <initializer_list>
#include <memory>
#include <limits>
#include <iterator>
#include <algorithm>
#include <initializer_list>
#include <iterator>
#include <limits>
#include <memory>
#include <version>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -179,8 +179,8 @@ typedef basic_fstream<wchar_t> wfstream;
*/
#include <__config>
#include <__availability>
#include <__config>
#include <__debug>
#include <__locale>
#include <cstdio>

View File

@@ -508,17 +508,16 @@ POLICY: For non-variadic implementations, the number of arguments is limited
#include <__config>
#include <__debug>
#include <__functional_base>
#include <concepts>
#include <type_traits>
#include <typeinfo>
#include <exception>
#include <memory>
#include <tuple>
#include <type_traits>
#include <typeinfo>
#include <utility>
#include <version>
#include <__functional_base>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

View File

@@ -361,8 +361,8 @@ template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc>;
*/
#include <__config>
#include <__availability>
#include <__config>
#include <__debug>
#include <chrono>
#include <exception>

View File

@@ -211,8 +211,8 @@ storage-class-specifier const error_category& iostream_category() noexcept;
*/
#include <__config>
#include <iosfwd>
#include <__locale>
#include <iosfwd>
#include <system_error>
#if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER)

View File

@@ -14,9 +14,9 @@
iostream synopsis
#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>
#include <streambuf>
namespace std {
@@ -35,9 +35,9 @@ extern wostream wclog;
#include <__config>
#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>
#include <streambuf>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -159,8 +159,8 @@ template <class Stream, class T>
*/
#include <__config>
#include <version>
#include <ostream>
#include <version>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -40,8 +40,8 @@ namespace std
*/
#include <__config>
#include <__availability>
#include <__config>
#include <atomic>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -181,17 +181,15 @@ template <class T, class Allocator, class Predicate>
*/
#include <__config>
#include <memory>
#include <limits>
#include <__debug>
#include <algorithm>
#include <initializer_list>
#include <iterator>
#include <algorithm>
#include <limits>
#include <memory>
#include <type_traits>
#include <version>
#include <__debug>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

View File

@@ -188,21 +188,21 @@ template <class charT> class messages_byname;
*/
#include <__config>
#include <__locale>
#include <__debug>
#include <__locale>
#include <algorithm>
#include <memory>
#include <ios>
#include <streambuf>
#include <iterator>
#include <limits>
#include <version>
#ifndef __APPLE__
#include <cstdarg>
# include <cstdarg>
#endif
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <ios>
#include <iterator>
#include <limits>
#include <memory>
#include <streambuf>
#include <version>
#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
// Most unix variants have catopen. These are the specific ones that don't.

View File

@@ -490,13 +490,12 @@ erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred); // C++20
#include <__node_handle>
#include <__tree>
#include <compare>
#include <functional>
#include <initializer_list>
#include <iterator> // __libcpp_erase_if_container
#include <memory>
#include <utility>
#include <functional>
#include <initializer_list>
#include <type_traits>
#include <utility>
#include <version>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -661,19 +661,7 @@ void* align(size_t alignment, size_t size, void*& ptr, size_t& space);
*/
#include <__config>
#include <type_traits>
#include <typeinfo>
#include <compare>
#include <cstddef>
#include <cstdint>
#include <new>
#include <utility>
#include <iterator>
#include <__functional_base>
#include <iosfwd>
#include <tuple>
#include <stdexcept>
#include <cstring>
#include <__memory/addressof.h>
#include <__memory/allocation_guard.h>
#include <__memory/allocator.h>
@@ -687,6 +675,18 @@ void* align(size_t alignment, size_t size, void*& ptr, size_t& space);
#include <__memory/temporary_buffer.h>
#include <__memory/uninitialized_algorithms.h>
#include <__memory/unique_ptr.h>
#include <compare>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <iosfwd>
#include <iterator>
#include <new>
#include <stdexcept>
#include <tuple>
#include <type_traits>
#include <typeinfo>
#include <utility>
#include <version>
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)

View File

@@ -188,14 +188,14 @@ template<class Callable, class ...Args>
#include <__config>
#include <__mutex_base>
#include <__threading_support>
#include <cstdint>
#include <functional>
#include <memory>
#ifndef _LIBCPP_CXX03_LANG
#include <tuple>
# include <tuple>
#endif
#include <version>
#include <__threading_support>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -86,8 +86,8 @@ void operator delete[](void* ptr, void*) noexcept;
*/
#include <__config>
#include <__availability>
#include <__config>
#include <cstddef>
#include <cstdlib>
#include <exception>

View File

@@ -59,13 +59,12 @@ namespace std::numbers {
*/
#include <__config>
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS)
#include <concepts>
#include <type_traits>
#include <version>
#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS)
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

View File

@@ -146,8 +146,8 @@ template<class T>
*/
#include <__config>
#include <__availability>
#include <__config>
#include <__debug>
#include <__functional_base>
#include <compare>

View File

@@ -134,11 +134,11 @@ template <class Stream, class T>
*/
#include <__config>
#include <ios>
#include <streambuf>
#include <locale>
#include <iterator>
#include <bitset>
#include <ios>
#include <iterator>
#include <locale>
#include <streambuf>
#include <version>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -179,11 +179,11 @@ template <class T, class Container, class Compare>
*/
#include <__config>
#include <algorithm>
#include <compare>
#include <deque>
#include <vector>
#include <functional>
#include <algorithm>
#include <vector>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -1678,18 +1678,18 @@ class piecewise_linear_distribution
*/
#include <__config>
#include <cstddef>
#include <cstdint>
#include <algorithm>
#include <cmath>
#include <concepts>
#include <type_traits>
#include <cstddef>
#include <cstdint>
#include <initializer_list>
#include <limits>
#include <algorithm>
#include <numeric>
#include <vector>
#include <string>
#include <iosfwd>
#include <limits>
#include <numeric>
#include <string>
#include <type_traits>
#include <vector>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -88,8 +88,8 @@ namespace std::ranges {
#include <__ranges/data.h>
#include <__ranges/empty.h>
#include <__ranges/enable_borrowed_range.h>
#include <__ranges/view.h>
#include <__ranges/size.h>
#include <__ranges/view.h>
#include <compare> // Required by the standard.
#include <initializer_list> // Required by the standard.
#include <iterator> // Required by the standard.

View File

@@ -78,8 +78,8 @@ typedef ratio<1000000000000000000000000, 1> yotta; // not supported
*/
#include <__config>
#include <cstdint>
#include <climits>
#include <cstdint>
#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -45,8 +45,8 @@ using binary_semaphore = counting_semaphore<1>;
*/
#include <__config>
#include <__availability>
#include <__config>
#include <__threading_support>
#include <atomic>

View File

@@ -122,8 +122,8 @@ template <class Mutex>
*/
#include <__config>
#include <__availability>
#include <__config>
#include <version>
_LIBCPP_PUSH_MACROS

View File

@@ -181,8 +181,8 @@ typedef basic_stringstream<wchar_t> wstringstream;
*/
#include <__config>
#include <ostream>
#include <istream>
#include <ostream>
#include <string>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -42,9 +42,9 @@ public:
*/
#include <__config>
#include <cstdlib>
#include <exception>
#include <iosfwd> // for string forward decl
#include <cstdlib>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -108,8 +108,8 @@ protected:
*/
#include <__config>
#include <iosfwd>
#include <ios>
#include <iosfwd>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -514,26 +514,26 @@ basic_string<char32_t> operator "" s( const char32_t *str, size_t len ); // C++1
*/
#include <__config>
#include <compare>
#include <string_view>
#include <iosfwd>
#include <cstring>
#include <cstdio> // For EOF.
#include <cwchar>
#include <__debug>
#include <__functional_base>
#include <algorithm>
#include <compare>
#include <cstdio> // EOF
#include <cstring>
#include <cwchar>
#include <initializer_list>
#include <iosfwd>
#include <iterator>
#include <utility>
#include <memory>
#include <stdexcept>
#include <string_view>
#include <type_traits>
#include <initializer_list>
#include <__functional_base>
#include <utility>
#include <version>
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
#include <cstdint>
#endif
#include <__debug>
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
# include <cstdint>
#endif
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -182,16 +182,16 @@ namespace std {
*/
#include <__config>
#include <__debug>
#include <__ranges/enable_borrowed_range.h>
#include <__string>
#include <iosfwd>
#include <algorithm>
#include <compare>
#include <iosfwd>
#include <iterator>
#include <limits>
#include <stdexcept>
#include <version>
#include <__debug>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -130,8 +130,8 @@ private:
*/
#include <__config>
#include <ostream>
#include <istream>
#include <ostream>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -83,20 +83,18 @@ void sleep_for(const chrono::duration<Rep, Period>& rel_time);
*/
#include <__config>
#include <iosfwd>
#include <__debug>
#include <__functional_base>
#include <type_traits>
#include <__mutex_base>
#include <__threading_support>
#include <chrono>
#include <cstddef>
#include <functional>
#include <iosfwd>
#include <memory>
#include <system_error>
#include <chrono>
#include <__mutex_base>
#ifndef _LIBCPP_CXX03_LANG
#include <tuple>
#endif
#include <__threading_support>
#include <__debug>
#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -150,11 +150,11 @@ template <class... Types>
*/
#include <__config>
#include <__functional_base>
#include <__tuple>
#include <compare>
#include <cstddef>
#include <type_traits>
#include <__functional_base>
#include <utility>
#include <version>

View File

@@ -45,9 +45,9 @@ struct hash<type_index>
*/
#include <__config>
#include <typeinfo>
#include <__functional_base>
#include <compare>
#include <typeinfo>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -56,12 +56,13 @@ public:
*/
#include <__config>
#include <__availability>
#include <exception>
#include <__config>
#include <cstddef>
#include <cstdint>
#include <exception>
#include <type_traits>
#ifdef _LIBCPP_NO_EXCEPTIONS
#include <cstdlib>
#endif

View File

@@ -432,6 +432,7 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
*/
#include <__config>
#include <__debug>
#include <__hash_table>
#include <__node_handle>
#include <compare>
@@ -441,8 +442,6 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
#include <tuple>
#include <version>
#include <__debug>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

View File

@@ -387,6 +387,7 @@ template <class Value, class Hash, class Pred, class Alloc>
*/
#include <__config>
#include <__debug>
#include <__hash_table>
#include <__node_handle>
#include <compare>
@@ -394,8 +395,6 @@ template <class Value, class Hash, class Pred, class Alloc>
#include <iterator> // __libcpp_erase_if_container
#include <version>
#include <__debug>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

View File

@@ -208,17 +208,17 @@ template <class T>
*/
#include <__config>
#include <__debug>
#include <__tuple>
#include <__utility/to_underlying.h>
#include <compare>
#include <type_traits>
#include <initializer_list>
#include <cstddef>
#include <cstring>
#include <cstdint>
#include <cstring>
#include <initializer_list>
#include <limits>
#include <type_traits>
#include <version>
#include <__debug>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header

View File

@@ -340,11 +340,11 @@ template <class T> unspecified2 end(const valarray<T>& v);
*/
#include <__config>
#include <cstddef>
#include <cmath>
#include <initializer_list>
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <functional>
#include <initializer_list>
#include <new>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -354,7 +354,6 @@ template <class T> unspecified2 end(const valarray<T>& v);
_LIBCPP_PUSH_MACROS
#include <__undef_macros>
_LIBCPP_BEGIN_NAMESPACE_STD
template<class _Tp> class _LIBCPP_TEMPLATE_VIS valarray;

View File

@@ -199,19 +199,19 @@ namespace std {
*/
#include <__config>
#include <__availability>
#include <__config>
#include <__tuple>
#include <array>
#include <compare>
#include <exception>
#include <functional>
#include <initializer_list>
#include <limits>
#include <new>
#include <tuple>
#include <type_traits>
#include <utility>
#include <limits>
#include <version>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)

View File

@@ -272,22 +272,21 @@ erase_if(vector<T, Allocator>& c, Predicate pred); // C++20
*/
#include <__config>
#include <iosfwd> // for forward declaration of vector
#include <__bit_reference>
#include <type_traits>
#include <__debug>
#include <__functional_base>
#include <__split_buffer>
#include <algorithm>
#include <climits>
#include <compare>
#include <limits>
#include <cstring>
#include <initializer_list>
#include <iosfwd> // for forward declaration of vector
#include <limits>
#include <memory>
#include <stdexcept>
#include <algorithm>
#include <cstring>
#include <type_traits>
#include <version>
#include <__split_buffer>
#include <__functional_base>
#include <__debug>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header