https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92546

--- Comment #27 from Jonathan Wakely <redi at gcc dot gnu.org> ---
pst/algorithm_impl.h includes <functional> just because it needs std::not_fn.
We could move that to a separate header. Even without that, we could do:

--- a/libstdc++-v3/include/pstl/algorithm_impl.h
+++ b/libstdc++-v3/include/pstl/algorithm_impl.h
@@ -10,11 +10,12 @@
 #ifndef _PSTL_ALGORITHM_IMPL_H
 #define _PSTL_ALGORITHM_IMPL_H

-#include <iterator>
 #include <type_traits>
-#include <utility>
 #include <functional>
 #include <algorithm>
+#include <bits/stl_iterator_base_types.h>
+#include <bits/stl_iterator_base_funcs.h>
+#include <bits/stl_pair.h>

 #include "execution_impl.h"
 #include "memory_impl.h"


And similarly:

--- a/libstdc++-v3/include/pstl/glue_numeric_impl.h
+++ b/libstdc++-v3/include/pstl/glue_numeric_impl.h
@@ -10,7 +10,7 @@
 #ifndef _PSTL_GLUE_NUMERIC_IMPL_H
 #define _PSTL_GLUE_NUMERIC_IMPL_H

-#include <functional>
+#include <bits/stl_function.h>

 #include "utils.h"
 #include "numeric_fwd.h"


And:

--- a/libstdc++-v3/include/pstl/memory_impl.h
+++ b/libstdc++-v3/include/pstl/memory_impl.h
@@ -10,7 +10,8 @@
 #ifndef _PSTL_MEMORY_IMPL_H
 #define _PSTL_MEMORY_IMPL_H

-#include <iterator>
+#include <bits/move.h>
+#include <bits/stl_iterator_base_types.h>

 #include "unseq_backend_simd.h"


However, these headers come from upstream, so this would slightly complicate
rebasing on new upstream versions.

Reply via email to