Tested x86_64-linux, Pushed to trunk. -- >8 --
The <new> header is needed by std::function to use placement new, so include it in <bits/std_function.h> instead of in <functional>. libstdc++-v3/ChangeLog: * include/bits/std_function.h: Include <new> but do not include <bits/stl_function.h>. * include/std/functional: Do not include <new>. --- libstdc++-v3/include/bits/std_function.h | 10 +++++----- libstdc++-v3/include/std/functional | 7 +++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/libstdc++-v3/include/bits/std_function.h b/libstdc++-v3/include/bits/std_function.h index f5423a3a5c7..8ab32a6855e 100644 --- a/libstdc++-v3/include/bits/std_function.h +++ b/libstdc++-v3/include/bits/std_function.h @@ -36,11 +36,11 @@ # include <bits/c++0x_warning.h> #else -#include <typeinfo> -#include <bits/stl_function.h> -#include <bits/invoke.h> -#include <bits/refwrap.h> -#include <bits/functexcept.h> +#include <new> // placement new +#include <typeinfo> // typeid +#include <bits/invoke.h> // __invoke_r +#include <bits/refwrap.h> // ref wrapper, _Maybe_unary_or_binary_function +#include <bits/functexcept.h> // __throw_bad_function_call namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional index adf9cb1c546..d22acaa3cb8 100644 --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -46,11 +46,10 @@ #pragma GCC system_header #include <bits/c++config.h> -#include <bits/stl_function.h> +#include <bits/stl_function.h> // std::equal_to, std::unary_function etc. #if __cplusplus >= 201103L -#include <new> #include <tuple> #include <type_traits> #include <bits/functional_hash.h> @@ -67,8 +66,8 @@ # endif # include <bits/stl_algo.h> // std::search #endif -#if __cplusplus > 201703L -# include <bits/ranges_cmp.h> +#if __cplusplus >= 202002L +# include <bits/ranges_cmp.h> // std::identity, ranges::equal_to etc. # include <compare> #endif #if __cplusplus > 202002L && _GLIBCXX_HOSTED -- 2.37.3