[libc++] Remove the type_traits includes from limits and new

type_traits is currently unable to include __type_traits/noexcept_move_assign_container.h, because it would cause several include cycles.

type_traits -> __type_traits/noexcept_move_assign_container.h -> __memory/allocator_traits.h -> __memory/construct_at.h -> new -> exception -> type_traits

type_traits -> __type_traits/noexcept_move_assign_container.h -> __memory/allocator_traits.h -> __memory/construct_at.h -> new -> type_traits

type_traits -> __type_traits/noexcept_move_assign_container.h -> __memory/allocator_traits.h -> limits -> type_traits

This is a problem for clang modules after the std mega module is broken up (D144322), because it becomes a module cycle which is a hard error.

Unconditionally remove the type_traits includes from limits and new in all versions, and also remove the exception include from new. (These are already removed in C++23.)

Reviewed By: ldionne, Mordante, #libc

Differential Revision: https://reviews.llvm.org/D153214
This commit is contained in:
Ian Anderson 2023-06-05 15:08:54 -07:00
parent e28b3ea52a
commit 2af6d79c7e
8 changed files with 19 additions and 24 deletions

View File

@ -83,6 +83,10 @@ Deprecations and Removals
- ``<algorithm>`` no longer includes ``<chrono>`` in any C++ version (it was previously included in C++17 and earlier).
- ``<limits>`` no longer includes ``<type_traits>`` in any C++ version (it was previously included in C++20 and earlier).
- ``<new>`` no longer includes ``<exception>`` or ``<type_traits>`` in any C++ version (they were previously included in C++20 and earlier).
- ``<string>`` no longer includes ``<vector>`` in any C++ version (it was previously included in C++20 and earlier).
- ``<string>``, ``<string_view>``, and ``<mutex>`` no longer include ``<functional>``

View File

@ -823,8 +823,4 @@ _LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <type_traits>
#endif
#endif // _LIBCPP_LIMITS

View File

@ -365,9 +365,4 @@ inline constexpr size_t hardware_constructive_interference_size = __GCC_CONSTRUC
_LIBCPP_END_NAMESPACE_STD
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <exception>
# include <type_traits>
#endif
#endif // _LIBCPP_NEW

View File

@ -456,7 +456,6 @@ latch limits
latch ratio
latch type_traits
latch version
limits type_traits
limits version
list algorithm
list atomic
@ -571,8 +570,6 @@ mutex typeinfo
mutex version
new cstddef
new cstdlib
new exception
new type_traits
new version
numbers concepts
numbers type_traits
@ -639,6 +636,7 @@ ostream version
queue compare
queue concepts
queue cstddef
queue cstdint
queue cstdlib
queue deque
queue functional
@ -774,6 +772,7 @@ sstream version
stack compare
stack concepts
stack cstddef
stack cstdint
stack deque
stack functional
stack initializer_list
@ -936,6 +935,7 @@ valarray algorithm
valarray cmath
valarray concepts
valarray cstddef
valarray cstdint
valarray cstdlib
valarray cstring
valarray functional

1 algorithm atomic
456 latch ratio
457 latch type_traits
458 latch version
limits type_traits
459 limits version
460 list algorithm
461 list atomic
570 mutex version
571 new cstddef
572 new cstdlib
new exception
new type_traits
573 new version
574 numbers concepts
575 numbers type_traits
636 queue compare
637 queue concepts
638 queue cstddef
639 queue cstdint
640 queue cstdlib
641 queue deque
642 queue functional
772 stack compare
773 stack concepts
774 stack cstddef
775 stack cstdint
776 stack deque
777 stack functional
778 stack initializer_list
935 valarray cmath
936 valarray concepts
937 valarray cstddef
938 valarray cstdint
939 valarray cstdlib
940 valarray cstring
941 valarray functional

View File

@ -456,7 +456,6 @@ latch limits
latch ratio
latch type_traits
latch version
limits type_traits
limits version
list algorithm
list atomic
@ -572,8 +571,6 @@ mutex typeinfo
mutex version
new cstddef
new cstdlib
new exception
new type_traits
new version
numbers concepts
numbers type_traits
@ -640,6 +637,7 @@ ostream version
queue compare
queue concepts
queue cstddef
queue cstdint
queue cstdlib
queue deque
queue functional
@ -775,6 +773,7 @@ sstream version
stack compare
stack concepts
stack cstddef
stack cstdint
stack deque
stack functional
stack initializer_list
@ -937,6 +936,7 @@ valarray algorithm
valarray cmath
valarray concepts
valarray cstddef
valarray cstdint
valarray cstdlib
valarray cstring
valarray functional

1 algorithm atomic
456 latch ratio
457 latch type_traits
458 latch version
limits type_traits
459 limits version
460 list algorithm
461 list atomic
571 mutex version
572 new cstddef
573 new cstdlib
new exception
new type_traits
574 new version
575 numbers concepts
576 numbers type_traits
637 queue compare
638 queue concepts
639 queue cstddef
640 queue cstdint
641 queue cstdlib
642 queue deque
643 queue functional
773 stack compare
774 stack concepts
775 stack cstddef
776 stack cstdint
777 stack deque
778 stack functional
779 stack initializer_list
936 valarray cmath
937 valarray concepts
938 valarray cstddef
939 valarray cstdint
940 valarray cstdlib
941 valarray cstring
942 valarray functional

View File

@ -458,7 +458,6 @@ latch limits
latch ratio
latch type_traits
latch version
limits type_traits
limits version
list algorithm
list atomic
@ -574,8 +573,6 @@ mutex typeinfo
mutex version
new cstddef
new cstdlib
new exception
new type_traits
new version
numbers concepts
numbers type_traits
@ -642,6 +639,7 @@ ostream version
queue compare
queue concepts
queue cstddef
queue cstdint
queue cstdlib
queue deque
queue functional
@ -777,6 +775,7 @@ sstream version
stack compare
stack concepts
stack cstddef
stack cstdint
stack deque
stack functional
stack initializer_list
@ -939,6 +938,7 @@ valarray algorithm
valarray cmath
valarray concepts
valarray cstddef
valarray cstdint
valarray cstdlib
valarray cstring
valarray functional

1 algorithm atomic
458 latch ratio
459 latch type_traits
460 latch version
limits type_traits
461 limits version
462 list algorithm
463 list atomic
573 mutex version
574 new cstddef
575 new cstdlib
new exception
new type_traits
576 new version
577 numbers concepts
578 numbers type_traits
639 queue compare
640 queue concepts
641 queue cstddef
642 queue cstdint
643 queue cstdlib
644 queue deque
645 queue functional
775 stack compare
776 stack concepts
777 stack cstddef
778 stack cstdint
779 stack deque
780 stack functional
781 stack initializer_list
938 valarray cmath
939 valarray concepts
940 valarray cstddef
941 valarray cstdint
942 valarray cstdlib
943 valarray cstring
944 valarray functional

View File

@ -458,7 +458,6 @@ latch limits
latch ratio
latch type_traits
latch version
limits type_traits
limits version
list algorithm
list atomic
@ -574,8 +573,6 @@ mutex typeinfo
mutex version
new cstddef
new cstdlib
new exception
new type_traits
new version
numbers concepts
numbers type_traits
@ -642,6 +639,7 @@ ostream version
queue compare
queue concepts
queue cstddef
queue cstdint
queue cstdlib
queue deque
queue functional
@ -777,6 +775,7 @@ sstream version
stack compare
stack concepts
stack cstddef
stack cstdint
stack deque
stack functional
stack initializer_list
@ -939,6 +938,7 @@ valarray algorithm
valarray cmath
valarray concepts
valarray cstddef
valarray cstdint
valarray cstdlib
valarray cstring
valarray functional

1 algorithm atomic
458 latch ratio
459 latch type_traits
460 latch version
limits type_traits
461 limits version
462 list algorithm
463 list atomic
573 mutex version
574 new cstddef
575 new cstdlib
new exception
new type_traits
576 new version
577 numbers concepts
578 numbers type_traits
639 queue compare
640 queue concepts
641 queue cstddef
642 queue cstdint
643 queue cstdlib
644 queue deque
645 queue functional
775 stack compare
776 stack concepts
777 stack cstddef
778 stack cstdint
779 stack deque
780 stack functional
781 stack initializer_list
938 valarray cmath
939 valarray concepts
940 valarray cstddef
941 valarray cstdint
942 valarray cstdlib
943 valarray cstring
944 valarray functional

View File

@ -464,7 +464,6 @@ latch limits
latch ratio
latch type_traits
latch version
limits type_traits
limits version
list algorithm
list atomic
@ -580,8 +579,6 @@ mutex typeinfo
mutex version
new cstddef
new cstdlib
new exception
new type_traits
new version
numbers concepts
numbers type_traits
@ -648,6 +645,7 @@ ostream version
queue compare
queue concepts
queue cstddef
queue cstdint
queue cstdlib
queue deque
queue functional
@ -783,6 +781,7 @@ sstream version
stack compare
stack concepts
stack cstddef
stack cstdint
stack deque
stack functional
stack initializer_list
@ -944,6 +943,7 @@ valarray algorithm
valarray cmath
valarray concepts
valarray cstddef
valarray cstdint
valarray cstdlib
valarray cstring
valarray functional

1 algorithm atomic
464 latch ratio
465 latch type_traits
466 latch version
limits type_traits
467 limits version
468 list algorithm
469 list atomic
579 mutex version
580 new cstddef
581 new cstdlib
new exception
new type_traits
582 new version
583 numbers concepts
584 numbers type_traits
645 queue compare
646 queue concepts
647 queue cstddef
648 queue cstdint
649 queue cstdlib
650 queue deque
651 queue functional
781 stack compare
782 stack concepts
783 stack cstddef
784 stack cstdint
785 stack deque
786 stack functional
787 stack initializer_list
943 valarray cmath
944 valarray concepts
945 valarray cstddef
946 valarray cstdint
947 valarray cstdlib
948 valarray cstring
949 valarray functional