summaryrefslogtreecommitdiff
path: root/libcxx/include
diff options
context:
space:
mode:
authorMark de Wever <koraq@xs4all.nl>2023-04-20 20:53:46 +0200
committerMark de Wever <koraq@xs4all.nl>2023-05-06 14:00:29 +0200
commit7e6bcb35a8116a653e4cdf660643e80459c5efce (patch)
treed03cee245e17d6dcc1d70dcf7ddd53ff76ab32e4 /libcxx/include
parent7b7be685d439746d3b880807e61f5b29ca246c79 (diff)
downloadllvm-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/mutex1
-rw-r--r--libcxx/include/string2
-rw-r--r--libcxx/include/string_view1
-rw-r--r--libcxx/include/vector5
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