https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119409
Bug ID: 119409
Summary: <functional> should not include all of <unordered_map>
and <vector>
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
Target Milestone: ---
Currently the <functional> header does:
#if __cplusplus >= 201703L
# if _GLIBCXX_HOSTED
# include <unordered_map>
# include <vector>
# include <array>
# endif
# include <bits/stl_algobase.h> // std::search
#endif
This means that all feature test macros defined by <vector> are being defined
by <functional>.
It would be better if we include internal headers instead, so that we don't
"leak" feature test macros for containers into <functional>
So something like:
#if __cplusplus >= 201703L
# if _GLIBCXX_HOSTED
# include <bits/unordered_map.h>
# include <bits/stl_vector.h>
# include <bits/vector.tcc>
# include <array>
# endif
# include <bits/stl_algobase.h> // std::search
#endif