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

Reply via email to