https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124465
Bug ID: 124465
Summary: Increase granularity of libstdc++ headers
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
Target Milestone: ---
<type_traits> keeps growing, we could move the widely-used parts into a smaller
header so that most of the library doesn't need the whole <type_traits>.
We could split <concepts> into smaller pieces, so that e.g. std::same_as can be
used without std::equivalence_relation etc.
<compare> currently includes <concepts>, but it only needs some of it: same_as,
convertible_to, floating_point, __cref, __boolean_testable,
__weakly_eq_cmp_with, __partially_ordered_with, __comparison_common_type_with,
__not_overloaded_spaceship.
As noted in Bug 124428:
It would be good if <vector> didn't need to include all of <numbers> just so
that max_diff_type.h can use ln2 and ln10 constants, and didn't need all of
<tuple> just because the pmr::vector alias uses pmr::polymorphic_allocator
which does uses-allocator construction, and didn't need all of <bit> just
because stl_algobase.h uses __bit_width