diff --git a/libcxx/include/__functional_base b/libcxx/include/__functional_base --- a/libcxx/include/__functional_base +++ b/libcxx/include/__functional_base @@ -11,10 +11,10 @@ #define _LIBCPP_FUNCTIONAL_BASE #include <__config> -#include -#include #include #include +#include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/__hash_table b/libcxx/include/__hash_table --- a/libcxx/include/__hash_table +++ b/libcxx/include/__hash_table @@ -10,16 +10,16 @@ #ifndef _LIBCPP__HASH_TABLE #define _LIBCPP__HASH_TABLE +#include <__bits> // __libcpp_clz #include <__config> -#include -#include -#include +#include <__debug> #include #include -#include +#include +#include +#include #include - -#include <__debug> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/__iterator/iterator_traits.h b/libcxx/include/__iterator/iterator_traits.h --- a/libcxx/include/__iterator/iterator_traits.h +++ b/libcxx/include/__iterator/iterator_traits.h @@ -428,7 +428,7 @@ template >::value> struct __has_iterator_category_convertible_to - : _BoolConstant::iterator_category, _Up>::value> + : is_convertible::iterator_category, _Up> {}; template @@ -436,7 +436,7 @@ template ::value> struct __has_iterator_concept_convertible_to - : _BoolConstant::value> + : is_convertible {}; template @@ -454,10 +454,11 @@ template struct __is_cpp17_random_access_iterator : public __has_iterator_category_convertible_to<_Tp, random_access_iterator_tag> {}; -// __is_cpp17_contiguous_iterator determines if an iterator is contiguous, -// either because it advertises itself as such (in C++20) or because it -// is a pointer type or a known trivial wrapper around a pointer type, -// such as __wrap_iter. +// __is_cpp17_contiguous_iterator determines if an iterator is known by +// libc++ to be contiguous, either because it advertises itself as such +// (in C++20) or because it is a pointer type or a known trivial wrapper +// around a pointer type, such as __wrap_iter. Such iterators receive +// special "contiguous" optimizations in std::copy and std::sort. // #if _LIBCPP_STD_VER > 17 template diff --git a/libcxx/include/__locale b/libcxx/include/__locale --- a/libcxx/include/__locale +++ b/libcxx/include/__locale @@ -10,8 +10,8 @@ #ifndef _LIBCPP___LOCALE #define _LIBCPP___LOCALE -#include <__config> #include <__availability> +#include <__config> #include #include #include diff --git a/libcxx/include/__mutex_base b/libcxx/include/__mutex_base --- a/libcxx/include/__mutex_base +++ b/libcxx/include/__mutex_base @@ -11,9 +11,9 @@ #define _LIBCPP___MUTEX_BASE #include <__config> +#include <__threading_support> #include #include -#include <__threading_support> #include diff --git a/libcxx/include/__split_buffer b/libcxx/include/__split_buffer --- a/libcxx/include/__split_buffer +++ b/libcxx/include/__split_buffer @@ -3,8 +3,8 @@ #define _LIBCPP_SPLIT_BUFFER #include <__config> -#include #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/__std_stream b/libcxx/include/__std_stream --- a/libcxx/include/__std_stream +++ b/libcxx/include/__std_stream @@ -11,10 +11,10 @@ #define _LIBCPP___STD_STREAM #include <__config> -#include -#include #include <__locale> #include +#include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/__threading_support b/libcxx/include/__threading_support --- a/libcxx/include/__threading_support +++ b/libcxx/include/__threading_support @@ -10,11 +10,11 @@ #ifndef _LIBCPP_THREADING_SUPPORT #define _LIBCPP_THREADING_SUPPORT -#include <__config> #include <__availability> +#include <__config> #include -#include #include +#include #include #ifdef __MVS__ diff --git a/libcxx/include/__tree b/libcxx/include/__tree --- a/libcxx/include/__tree +++ b/libcxx/include/__tree @@ -11,10 +11,10 @@ #define _LIBCPP___TREE #include <__config> +#include #include #include #include -#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm --- a/libcxx/include/algorithm +++ b/libcxx/include/algorithm @@ -646,15 +646,15 @@ */ #include <__config> -#include -#include +#include <__bits> // __libcpp_clz +#include #include -#include // needed to provide swap_ranges. -#include #include +#include #include -#include -#include +#include +#include +#include // swap_ranges #include #include <__debug> diff --git a/libcxx/include/any b/libcxx/include/any --- a/libcxx/include/any +++ b/libcxx/include/any @@ -80,12 +80,12 @@ */ -#include <__config> #include <__availability> +#include <__config> +#include #include -#include #include -#include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/array b/libcxx/include/array --- a/libcxx/include/array +++ b/libcxx/include/array @@ -109,25 +109,22 @@ */ #include <__config> +#include <__debug> #include <__tuple> -#include -#include -#include #include -#include #include // for _LIBCPP_UNREACHABLE +#include +#include +#include +#include #include -#include <__debug> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif - - _LIBCPP_BEGIN_NAMESPACE_STD - template struct _LIBCPP_TEMPLATE_VIS array { diff --git a/libcxx/include/atomic b/libcxx/include/atomic --- a/libcxx/include/atomic +++ b/libcxx/include/atomic @@ -574,8 +574,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include <__threading_support> #include #include diff --git a/libcxx/include/barrier b/libcxx/include/barrier --- a/libcxx/include/barrier +++ b/libcxx/include/barrier @@ -45,8 +45,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include #ifndef _LIBCPP_HAS_NO_TREE_BARRIER # include diff --git a/libcxx/include/bit b/libcxx/include/bit --- a/libcxx/include/bit +++ b/libcxx/include/bit @@ -55,7 +55,7 @@ */ #include <__config> -#include <__bits> +#include <__bits> // __libcpp_clz #include <__debug> #include #include diff --git a/libcxx/include/bitset b/libcxx/include/bitset --- a/libcxx/include/bitset +++ b/libcxx/include/bitset @@ -114,12 +114,12 @@ #include <__config> #include <__bit_reference> -#include +#include <__functional_base> #include -#include -#include +#include #include -#include <__functional_base> +#include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/charconv b/libcxx/include/charconv --- a/libcxx/include/charconv +++ b/libcxx/include/charconv @@ -73,8 +73,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include <__errc> #include <__utility/to_underlying.h> #include // for log2f diff --git a/libcxx/include/chrono b/libcxx/include/chrono --- a/libcxx/include/chrono +++ b/libcxx/include/chrono @@ -823,13 +823,13 @@ } // std */ -#include <__config> #include <__availability> +#include <__config> #include #include -#include -#include #include +#include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/complex b/libcxx/include/complex --- a/libcxx/include/complex +++ b/libcxx/include/complex @@ -232,10 +232,10 @@ */ #include <__config> -#include -#include #include #include +#include +#include #include #if !defined(_LIBCPP_HAS_NO_LOCALIZATION) diff --git a/libcxx/include/exception b/libcxx/include/exception --- a/libcxx/include/exception +++ b/libcxx/include/exception @@ -76,8 +76,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include <__memory/addressof.h> #include #include diff --git a/libcxx/include/filesystem b/libcxx/include/filesystem --- a/libcxx/include/filesystem +++ b/libcxx/include/filesystem @@ -229,20 +229,21 @@ */ -#include <__config> #include <__availability> -#include -#include +#include <__config> +#include <__debug> #include #include -#include +#include +#include #include +#include #include #include #include +#include #include #include -#include #include #if !defined(_LIBCPP_HAS_NO_LOCALIZATION) @@ -250,8 +251,6 @@ # include // 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 diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list --- a/libcxx/include/forward_list +++ b/libcxx/include/forward_list @@ -180,11 +180,11 @@ */ #include <__config> +#include #include -#include -#include #include -#include +#include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/fstream b/libcxx/include/fstream --- a/libcxx/include/fstream +++ b/libcxx/include/fstream @@ -179,8 +179,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include <__debug> #include <__locale> #include diff --git a/libcxx/include/functional b/libcxx/include/functional --- a/libcxx/include/functional +++ b/libcxx/include/functional @@ -508,17 +508,16 @@ #include <__config> #include <__debug> +#include <__functional_base> #include -#include -#include #include #include #include +#include +#include #include #include -#include <__functional_base> - #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif diff --git a/libcxx/include/future b/libcxx/include/future --- a/libcxx/include/future +++ b/libcxx/include/future @@ -361,8 +361,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include <__debug> #include #include diff --git a/libcxx/include/ios b/libcxx/include/ios --- a/libcxx/include/ios +++ b/libcxx/include/ios @@ -211,8 +211,8 @@ */ #include <__config> -#include #include <__locale> +#include #include #if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER) diff --git a/libcxx/include/iostream b/libcxx/include/iostream --- a/libcxx/include/iostream +++ b/libcxx/include/iostream @@ -14,9 +14,9 @@ iostream synopsis #include -#include #include #include +#include namespace std { @@ -35,9 +35,9 @@ #include <__config> #include -#include #include #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/istream b/libcxx/include/istream --- a/libcxx/include/istream +++ b/libcxx/include/istream @@ -159,8 +159,8 @@ */ #include <__config> -#include #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/iterator b/libcxx/include/iterator --- a/libcxx/include/iterator +++ b/libcxx/include/iterator @@ -1294,8 +1294,7 @@ typedef typename iterator_traits::reference reference; typedef typename iterator_traits::iterator_category iterator_category; #if _LIBCPP_STD_VER > 17 - typedef _If<__is_cpp17_contiguous_iterator<_Iter>::value, - contiguous_iterator_tag, iterator_category> iterator_concept; + typedef contiguous_iterator_tag iterator_concept; #endif private: @@ -1473,12 +1472,12 @@ #if _LIBCPP_STD_VER <= 17 template -struct __is_cpp17_contiguous_iterator<__wrap_iter<_It> > : __is_cpp17_contiguous_iterator<_It> {}; +struct __is_cpp17_contiguous_iterator<__wrap_iter<_It> > : true_type {}; #endif template _LIBCPP_CONSTEXPR -_EnableIf<__is_cpp17_contiguous_iterator<_Iter>::value, decltype(_VSTD::__to_address(declval<_Iter>()))> +decltype(_VSTD::__to_address(declval<_Iter>())) __to_address(__wrap_iter<_Iter> __w) _NOEXCEPT { return _VSTD::__to_address(__w.base()); } diff --git a/libcxx/include/latch b/libcxx/include/latch --- a/libcxx/include/latch +++ b/libcxx/include/latch @@ -40,8 +40,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/list b/libcxx/include/list --- a/libcxx/include/list +++ b/libcxx/include/list @@ -181,17 +181,15 @@ */ #include <__config> - -#include -#include +#include <__debug> +#include #include #include -#include +#include +#include #include #include -#include <__debug> - #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif diff --git a/libcxx/include/locale b/libcxx/include/locale --- a/libcxx/include/locale +++ b/libcxx/include/locale @@ -188,21 +188,21 @@ */ #include <__config> -#include <__locale> #include <__debug> +#include <__locale> #include -#include -#include -#include -#include -#include -#include #ifndef __APPLE__ -#include +# include #endif +#include #include #include -#include +#include +#include +#include +#include +#include +#include #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) // Most unix variants have catopen. These are the specific ones that don't. diff --git a/libcxx/include/map b/libcxx/include/map --- a/libcxx/include/map +++ b/libcxx/include/map @@ -490,13 +490,12 @@ #include <__node_handle> #include <__tree> #include +#include #include #include // __libcpp_erase_if_container #include -#include -#include -#include #include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/memory b/libcxx/include/memory --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -665,19 +665,7 @@ */ #include <__config> -#include -#include -#include -#include -#include -#include -#include -#include #include <__functional_base> -#include -#include -#include -#include #include <__memory/addressof.h> #include <__memory/allocation_guard.h> #include <__memory/allocator.h> @@ -691,6 +679,18 @@ #include <__memory/temporary_buffer.h> #include <__memory/uninitialized_algorithms.h> #include <__memory/unique_ptr.h> +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR) diff --git a/libcxx/include/mutex b/libcxx/include/mutex --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -188,14 +188,14 @@ #include <__config> #include <__mutex_base> +#include <__threading_support> #include #include #include #ifndef _LIBCPP_CXX03_LANG -#include +# include #endif #include -#include <__threading_support> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/new b/libcxx/include/new --- a/libcxx/include/new +++ b/libcxx/include/new @@ -86,8 +86,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include #include #include diff --git a/libcxx/include/numbers b/libcxx/include/numbers --- a/libcxx/include/numbers +++ b/libcxx/include/numbers @@ -59,13 +59,12 @@ */ #include <__config> - -#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS) - #include #include #include +#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS) + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif diff --git a/libcxx/include/optional b/libcxx/include/optional --- a/libcxx/include/optional +++ b/libcxx/include/optional @@ -146,8 +146,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include <__debug> #include <__functional_base> #include diff --git a/libcxx/include/ostream b/libcxx/include/ostream --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -134,11 +134,11 @@ */ #include <__config> +#include #include -#include -#include #include -#include +#include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/queue b/libcxx/include/queue --- a/libcxx/include/queue +++ b/libcxx/include/queue @@ -179,11 +179,11 @@ */ #include <__config> +#include #include #include -#include #include -#include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/random b/libcxx/include/random --- a/libcxx/include/random +++ b/libcxx/include/random @@ -1678,18 +1678,18 @@ */ #include <__config> -#include -#include +#include #include #include -#include +#include +#include #include +#include #include -#include #include -#include #include -#include +#include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/ranges b/libcxx/include/ranges --- a/libcxx/include/ranges +++ b/libcxx/include/ranges @@ -88,8 +88,8 @@ #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 // Required by the standard. #include // Required by the standard. #include // Required by the standard. diff --git a/libcxx/include/ratio b/libcxx/include/ratio --- a/libcxx/include/ratio +++ b/libcxx/include/ratio @@ -78,8 +78,8 @@ */ #include <__config> -#include #include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/semaphore b/libcxx/include/semaphore --- a/libcxx/include/semaphore +++ b/libcxx/include/semaphore @@ -45,8 +45,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include <__threading_support> #include diff --git a/libcxx/include/shared_mutex b/libcxx/include/shared_mutex --- a/libcxx/include/shared_mutex +++ b/libcxx/include/shared_mutex @@ -122,8 +122,8 @@ */ -#include <__config> #include <__availability> +#include <__config> #include _LIBCPP_PUSH_MACROS diff --git a/libcxx/include/sstream b/libcxx/include/sstream --- a/libcxx/include/sstream +++ b/libcxx/include/sstream @@ -181,8 +181,8 @@ */ #include <__config> -#include #include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/stdexcept b/libcxx/include/stdexcept --- a/libcxx/include/stdexcept +++ b/libcxx/include/stdexcept @@ -42,9 +42,9 @@ */ #include <__config> -#include #include #include // for string forward decl +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/streambuf b/libcxx/include/streambuf --- a/libcxx/include/streambuf +++ b/libcxx/include/streambuf @@ -108,8 +108,8 @@ */ #include <__config> -#include #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/string b/libcxx/include/string --- a/libcxx/include/string +++ b/libcxx/include/string @@ -514,27 +514,27 @@ */ #include <__config> +#include <__debug> +#include <__functional_base> +#include #include -#include -#include +#include // EOF #include -#include // For EOF. #include -#include +#include +#include #include -#include #include #include +#include #include -#include -#include <__functional_base> +#include #include + #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS -#include +# include #endif -#include <__debug> - #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif diff --git a/libcxx/include/string_view b/libcxx/include/string_view --- a/libcxx/include/string_view +++ b/libcxx/include/string_view @@ -182,16 +182,16 @@ */ #include <__config> +#include <__debug> #include <__ranges/enable_borrowed_range.h> #include <__string> -#include #include #include +#include #include #include #include #include -#include <__debug> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/strstream b/libcxx/include/strstream --- a/libcxx/include/strstream +++ b/libcxx/include/strstream @@ -130,8 +130,8 @@ */ #include <__config> -#include #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/thread b/libcxx/include/thread --- a/libcxx/include/thread +++ b/libcxx/include/thread @@ -83,20 +83,18 @@ */ #include <__config> -#include +#include <__debug> #include <__functional_base> -#include +#include <__mutex_base> +#include <__threading_support> +#include #include #include +#include #include #include -#include -#include <__mutex_base> -#ifndef _LIBCPP_CXX03_LANG #include -#endif -#include <__threading_support> -#include <__debug> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/tuple b/libcxx/include/tuple --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -150,11 +150,11 @@ */ #include <__config> +#include <__functional_base> #include <__tuple> #include #include #include -#include <__functional_base> #include #include diff --git a/libcxx/include/typeindex b/libcxx/include/typeindex --- a/libcxx/include/typeindex +++ b/libcxx/include/typeindex @@ -45,9 +45,9 @@ */ #include <__config> -#include #include <__functional_base> #include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/typeinfo b/libcxx/include/typeinfo --- a/libcxx/include/typeinfo +++ b/libcxx/include/typeinfo @@ -56,12 +56,13 @@ */ -#include <__config> #include <__availability> -#include +#include <__config> #include #include +#include #include + #ifdef _LIBCPP_NO_EXCEPTIONS #include #endif diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map --- a/libcxx/include/unordered_map +++ b/libcxx/include/unordered_map @@ -432,6 +432,7 @@ */ #include <__config> +#include <__debug> #include <__hash_table> #include <__node_handle> #include @@ -441,8 +442,6 @@ #include #include -#include <__debug> - #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -387,6 +387,7 @@ */ #include <__config> +#include <__debug> #include <__hash_table> #include <__node_handle> #include @@ -394,8 +395,6 @@ #include // __libcpp_erase_if_container #include -#include <__debug> - #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif diff --git a/libcxx/include/utility b/libcxx/include/utility --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -208,17 +208,17 @@ */ #include <__config> +#include <__debug> #include <__tuple> #include <__utility/to_underlying.h> #include -#include -#include #include -#include #include +#include +#include #include +#include #include -#include <__debug> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/include/valarray b/libcxx/include/valarray --- a/libcxx/include/valarray +++ b/libcxx/include/valarray @@ -340,11 +340,11 @@ */ #include <__config> -#include -#include -#include #include +#include +#include #include +#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -354,7 +354,6 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> - _LIBCPP_BEGIN_NAMESPACE_STD template class _LIBCPP_TEMPLATE_VIS valarray; diff --git a/libcxx/include/variant b/libcxx/include/variant --- a/libcxx/include/variant +++ b/libcxx/include/variant @@ -199,19 +199,19 @@ */ -#include <__config> #include <__availability> +#include <__config> #include <__tuple> #include #include #include #include #include +#include #include #include #include #include -#include #include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/vector b/libcxx/include/vector --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -272,22 +272,21 @@ */ #include <__config> -#include // for forward declaration of vector #include <__bit_reference> -#include +#include <__debug> +#include <__functional_base> +#include <__split_buffer> +#include #include #include -#include +#include #include +#include // for forward declaration of vector +#include #include #include -#include -#include +#include #include -#include <__split_buffer> -#include <__functional_base> - -#include <__debug> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/libcxx/test/libcxx/iterators/contiguous_iterators.pass.cpp b/libcxx/test/libcxx/iterators/contiguous_iterators.pass.cpp --- a/libcxx/test/libcxx/iterators/contiguous_iterators.pass.cpp +++ b/libcxx/test/libcxx/iterators/contiguous_iterators.pass.cpp @@ -138,6 +138,21 @@ }; #endif +struct fake_deque_iterator : std::deque::iterator { + using element_type = int; +}; +static_assert(std::__is_cpp17_random_access_iterator::value, ""); +static_assert(!std::__is_cpp17_contiguous_iterator::value, ""); + +#if TEST_STD_VER >= 20 +struct fake2_deque_iterator : std::deque::iterator { + using iterator_concept = std::contiguous_iterator_tag; + using element_type = int; +}; +static_assert(std::__is_cpp17_random_access_iterator::value, ""); +static_assert(std::__is_cpp17_contiguous_iterator::value, ""); +#endif + int main(int, char**) { // basic tests @@ -178,21 +193,19 @@ static_assert(( std::__is_cpp17_contiguous_iterator >::value), ""); static_assert(( std::__is_cpp17_contiguous_iterator > >::value), ""); - static_assert((!std::__is_cpp17_contiguous_iterator > >::value), ""); - static_assert((!std::__is_cpp17_contiguous_iterator >::value), ""); - static_assert((!std::__is_cpp17_contiguous_iterator > >::value), ""); - static_assert((!std::__is_cpp17_contiguous_iterator > >::value), ""); + // Here my_random_access_iterator is standing in for some user's fancy pointer type, written pre-C++20. + static_assert(( std::__is_cpp17_contiguous_iterator >::value), ""); + static_assert(( std::__is_cpp17_contiguous_iterator > >::value), ""); #if TEST_STD_VER >= 20 static_assert(( std::__is_cpp17_contiguous_iterator >::value), ""); static_assert(( std::__is_cpp17_contiguous_iterator > >::value), ""); - static_assert((!std::__is_cpp17_contiguous_iterator > >::value), ""); #endif // iterators in the libc++ test suite static_assert((!std::__is_cpp17_contiguous_iterator >::value), ""); - static_assert((!std::__is_cpp17_contiguous_iterator >::value), ""); + static_assert((!std::__is_cpp17_contiguous_iterator >::value), ""); static_assert((!std::__is_cpp17_contiguous_iterator >::value), ""); static_assert((!std::__is_cpp17_contiguous_iterator >::value), ""); static_assert((!std::__is_cpp17_contiguous_iterator >::value), ""); @@ -228,14 +241,12 @@ static_assert((!std::__is_cpp17_contiguous_iterator::const_iterator> ::value), ""); static_assert((!std::__is_cpp17_contiguous_iterator::reverse_iterator> ::value), ""); static_assert((!std::__is_cpp17_contiguous_iterator::const_reverse_iterator> ::value), ""); - static_assert((!std::__is_cpp17_contiguous_iterator::iterator> >::value), ""); // vector is random-access but not contiguous static_assert((!std::__is_cpp17_contiguous_iterator::iterator> ::value), ""); static_assert((!std::__is_cpp17_contiguous_iterator::const_iterator> ::value), ""); static_assert((!std::__is_cpp17_contiguous_iterator::reverse_iterator> ::value), ""); static_assert((!std::__is_cpp17_contiguous_iterator::const_reverse_iterator> ::value), ""); - static_assert((!std::__is_cpp17_contiguous_iterator::iterator> >::value), ""); #if TEST_STD_VER >= 11 static_assert(( std::__is_cpp17_contiguous_iterator::iterator> ::value), "");