diff options
author | Mark de Wever <koraq@xs4all.nl> | 2023-04-20 20:53:46 +0200 |
---|---|---|
committer | Mark de Wever <koraq@xs4all.nl> | 2023-05-06 14:00:29 +0200 |
commit | 7e6bcb35a8116a653e4cdf660643e80459c5efce (patch) | |
tree | d03cee245e17d6dcc1d70dcf7ddd53ff76ab32e4 /libcxx/include | |
parent | 7b7be685d439746d3b880807e61f5b29ca246c79 (diff) | |
download | llvm-7e6bcb35a8116a653e4cdf660643e80459c5efce.tar.gz |
[libc++][format] Fixes vector<bool> requirements.
Makes sure the formatter for the vector<bool>::reference is enabled
when only the header <vector> is included. Before this change it
required <vector> and <format> to be included. This violated the
requirements in the Standard.
Fixes: https://llvm.org/PR61314
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D149543
Diffstat (limited to 'libcxx/include')
-rw-r--r-- | libcxx/include/mutex | 1 | ||||
-rw-r--r-- | libcxx/include/string | 2 | ||||
-rw-r--r-- | libcxx/include/string_view | 1 | ||||
-rw-r--r-- | libcxx/include/vector | 5 |
4 files changed, 3 insertions, 6 deletions
diff --git a/libcxx/include/mutex b/libcxx/include/mutex index ed9b43d59108..74945b975b72 100644 --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -715,7 +715,6 @@ _LIBCPP_POP_MACROS # include <cstdlib> # include <cstring> # include <ctime> -# include <functional> # include <initializer_list> # include <new> # include <stdexcept> diff --git a/libcxx/include/string b/libcxx/include/string index 1de3fb76ec42..b6e0841ccc2f 100644 --- a/libcxx/include/string +++ b/libcxx/include/string @@ -4389,13 +4389,11 @@ _LIBCPP_POP_MACROS # include <algorithm> # include <concepts> # include <cstdlib> -# include <functional> # include <iterator> # include <new> # include <type_traits> # include <typeinfo> # include <utility> -# include <vector> #endif #endif // _LIBCPP_STRING diff --git a/libcxx/include/string_view b/libcxx/include/string_view index f8cecfba9428..ac7d182a7f29 100644 --- a/libcxx/include/string_view +++ b/libcxx/include/string_view @@ -1047,7 +1047,6 @@ _LIBCPP_POP_MACROS # include <algorithm> # include <concepts> # include <cstdlib> -# include <functional> # include <iterator> # include <type_traits> #endif diff --git a/libcxx/include/vector b/libcxx/include/vector index d90eb1666c36..a1366d0a9c2d 100644 --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -293,6 +293,7 @@ template<class T, class charT> requires is-vector-bool-reference<T> // Since C++ #include <__debug> #include <__format/enable_insertable.h> #include <__format/formatter.h> +#include <__format/formatter_bool.h> #include <__functional/hash.h> #include <__functional/unary_function.h> #include <__iterator/advance.h> @@ -3325,7 +3326,7 @@ inline constexpr bool __format::__enable_insertable<vector<wchar_t>> = true; #endif // _LIBCPP_STD_VER >= 20 -#if _LIBCPP_STD_VER >= 23 +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) && _LIBCPP_STD_VER >= 23 template <class _Tp, class CharT> // Since is-vector-bool-reference is only used once it's inlined here. requires same_as<typename _Tp::__container, vector<bool, typename _Tp::__container::allocator_type>> @@ -3344,7 +3345,7 @@ public: return __underlying_.format(__ref, __ctx); } }; -#endif // _LIBCPP_STD_VER >= 23 +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) && _LIBCPP_STD_VER >= 23 _LIBCPP_END_NAMESPACE_STD |