aboutsummaryrefslogtreecommitdiff
path: root/libcxx/include
diff options
context:
space:
mode:
authorNikolas Klauser <nikolasklauser@berlin.de>2022-12-20 19:47:35 +0100
committerNikolas Klauser <nikolasklauser@berlin.de>2022-12-22 23:17:47 +0100
commit947dfc95ca914385c181f24bbc1a16143c17b5f0 (patch)
treeaa6bcf1d0c18054fb1a0ec81806ecf04ad638eae /libcxx/include
parent2c5ffa179c9e257ad7c87d0b8f18b9d63ce1a4fe (diff)
downloadllvm-947dfc95ca914385c181f24bbc1a16143c17b5f0.zip
llvm-947dfc95ca914385c181f24bbc1a16143c17b5f0.tar.gz
llvm-947dfc95ca914385c181f24bbc1a16143c17b5f0.tar.bz2
[libc++] Granularize <type_traits> includes in <utility>
Reviewed By: Mordante, #libc Spies: libcxx-commits Differential Revision: https://reviews.llvm.org/D140426
Diffstat (limited to 'libcxx/include')
-rw-r--r--libcxx/include/__compare/common_comparison_category.h3
-rw-r--r--libcxx/include/__compare/ordering.h3
-rw-r--r--libcxx/include/__compare/three_way_comparable.h2
-rw-r--r--libcxx/include/__functional/unwrap_ref.h1
-rw-r--r--libcxx/include/__utility/as_const.h2
-rw-r--r--libcxx/include/__utility/auto_cast.h2
-rw-r--r--libcxx/include/__utility/cmp.h6
-rw-r--r--libcxx/include/__utility/exchange.h3
-rw-r--r--libcxx/include/__utility/in_place.h3
-rw-r--r--libcxx/include/__utility/integer_sequence.h3
-rw-r--r--libcxx/include/__utility/move.h5
-rw-r--r--libcxx/include/__utility/pair.h19
-rw-r--r--libcxx/include/__utility/rel_ops.h3
-rw-r--r--libcxx/include/__utility/to_underlying.h2
-rw-r--r--libcxx/include/limits8
-rw-r--r--libcxx/include/module.modulemap.in5
-rw-r--r--libcxx/include/utility2
17 files changed, 54 insertions, 18 deletions
diff --git a/libcxx/include/__compare/common_comparison_category.h b/libcxx/include/__compare/common_comparison_category.h
index deab171..d555058 100644
--- a/libcxx/include/__compare/common_comparison_category.h
+++ b/libcxx/include/__compare/common_comparison_category.h
@@ -11,7 +11,8 @@
#include <__compare/ordering.h>
#include <__config>
-#include <type_traits>
+#include <__type_traits/is_same.h>
+#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__compare/ordering.h b/libcxx/include/__compare/ordering.h
index ab35a59..ff148ab 100644
--- a/libcxx/include/__compare/ordering.h
+++ b/libcxx/include/__compare/ordering.h
@@ -10,7 +10,8 @@
#define _LIBCPP___COMPARE_ORDERING_H
#include <__config>
-#include <type_traits>
+#include <__type_traits/enable_if.h>
+#include <__type_traits/is_same.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__compare/three_way_comparable.h b/libcxx/include/__compare/three_way_comparable.h
index cab2cb2..6c98916 100644
--- a/libcxx/include/__compare/three_way_comparable.h
+++ b/libcxx/include/__compare/three_way_comparable.h
@@ -16,8 +16,8 @@
#include <__concepts/same_as.h>
#include <__concepts/totally_ordered.h>
#include <__config>
+#include <__type_traits/common_reference.h>
#include <__type_traits/make_const_lvalue_ref.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__functional/unwrap_ref.h b/libcxx/include/__functional/unwrap_ref.h
index f720793..da000d8 100644
--- a/libcxx/include/__functional/unwrap_ref.h
+++ b/libcxx/include/__functional/unwrap_ref.h
@@ -10,6 +10,7 @@
#define _LIBCPP___FUNCTIONAL_UNWRAP_REF_H
#include <__config>
+#include <__type_traits/decay.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/as_const.h b/libcxx/include/__utility/as_const.h
index e28d7bc..d4a72f4 100644
--- a/libcxx/include/__utility/as_const.h
+++ b/libcxx/include/__utility/as_const.h
@@ -10,9 +10,9 @@
#define _LIBCPP___UTILITY_AS_CONST_H
#include <__config>
+#include <__type_traits/add_const.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/auto_cast.h b/libcxx/include/__utility/auto_cast.h
index e907944..381ed0c 100644
--- a/libcxx/include/__utility/auto_cast.h
+++ b/libcxx/include/__utility/auto_cast.h
@@ -11,7 +11,7 @@
#define _LIBCPP___UTILITY_AUTO_CAST_H
#include <__config>
-#include <type_traits>
+#include <__type_traits/decay.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/cmp.h b/libcxx/include/__utility/cmp.h
index 3cfd981..d448a1d 100644
--- a/libcxx/include/__utility/cmp.h
+++ b/libcxx/include/__utility/cmp.h
@@ -10,10 +10,14 @@
#define _LIBCPP___UTILITY_CMP_H
#include <__config>
+#include <__type_traits/disjunction.h>
+#include <__type_traits/is_integral.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/is_signed.h>
+#include <__type_traits/make_unsigned.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <limits>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/exchange.h b/libcxx/include/__utility/exchange.h
index 6838fc8..8df71a1 100644
--- a/libcxx/include/__utility/exchange.h
+++ b/libcxx/include/__utility/exchange.h
@@ -10,9 +10,10 @@
#define _LIBCPP___UTILITY_EXCHANGE_H
#include <__config>
+#include <__type_traits/is_nothrow_assignable.h>
+#include <__type_traits/is_nothrow_move_constructible.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/in_place.h b/libcxx/include/__utility/in_place.h
index bedd9e1..a351845 100644
--- a/libcxx/include/__utility/in_place.h
+++ b/libcxx/include/__utility/in_place.h
@@ -10,7 +10,8 @@
#define _LIBCPP___UTILITY_IN_PLACE_H
#include <__config>
-#include <type_traits>
+#include <__type_traits/remove_cvref.h>
+#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/integer_sequence.h b/libcxx/include/__utility/integer_sequence.h
index 9ba9d94..257b430 100644
--- a/libcxx/include/__utility/integer_sequence.h
+++ b/libcxx/include/__utility/integer_sequence.h
@@ -10,7 +10,8 @@
#define _LIBCPP___UTILITY_INTEGER_SEQUENCE_H
#include <__config>
-#include <type_traits>
+#include <__type_traits/is_integral.h>
+#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/move.h b/libcxx/include/__utility/move.h
index 5226730..2ffcba2 100644
--- a/libcxx/include/__utility/move.h
+++ b/libcxx/include/__utility/move.h
@@ -11,7 +11,10 @@
#define _LIBCPP___UTILITY_MOVE_H
#include <__config>
-#include <type_traits>
+#include <__type_traits/conditional.h>
+#include <__type_traits/is_copy_constructible.h>
+#include <__type_traits/is_nothrow_move_constructible.h>
+#include <__type_traits/remove_reference.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/pair.h b/libcxx/include/__utility/pair.h
index e183298..8151674 100644
--- a/libcxx/include/__utility/pair.h
+++ b/libcxx/include/__utility/pair.h
@@ -19,12 +19,29 @@
#include <__tuple_dir/tuple_element.h>
#include <__tuple_dir/tuple_indices.h>
#include <__tuple_dir/tuple_size.h>
+#include <__type_traits/common_reference.h>
+#include <__type_traits/common_type.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/is_assignable.h>
+#include <__type_traits/is_constructible.h>
+#include <__type_traits/is_convertible.h>
+#include <__type_traits/is_copy_assignable.h>
+#include <__type_traits/is_default_constructible.h>
#include <__type_traits/is_implicitly_default_constructible.h>
+#include <__type_traits/is_move_assignable.h>
+#include <__type_traits/is_nothrow_assignable.h>
+#include <__type_traits/is_nothrow_constructible.h>
+#include <__type_traits/is_nothrow_copy_assignable.h>
+#include <__type_traits/is_nothrow_copy_constructible.h>
+#include <__type_traits/is_nothrow_default_constructible.h>
+#include <__type_traits/is_nothrow_move_assignable.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/is_swappable.h>
+#include <__type_traits/nat.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <__utility/piecewise_construct.h>
#include <cstddef>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/rel_ops.h b/libcxx/include/__utility/rel_ops.h
index 2577e94..5f8d42c 100644
--- a/libcxx/include/__utility/rel_ops.h
+++ b/libcxx/include/__utility/rel_ops.h
@@ -10,9 +10,6 @@
#define _LIBCPP___UTILITY_REL_OPS_H
#include <__config>
-#include <__utility/forward.h>
-#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/__utility/to_underlying.h b/libcxx/include/__utility/to_underlying.h
index 3428406..a194d3e 100644
--- a/libcxx/include/__utility/to_underlying.h
+++ b/libcxx/include/__utility/to_underlying.h
@@ -11,7 +11,7 @@
#define _LIBCPP___UTILITY_TO_UNDERLYING_H
#include <__config>
-#include <type_traits>
+#include <__type_traits/underlying_type.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
diff --git a/libcxx/include/limits b/libcxx/include/limits
index ee8249f..9f5949e 100644
--- a/libcxx/include/limits
+++ b/libcxx/include/limits
@@ -104,7 +104,9 @@ template<> class numeric_limits<cv long double>;
#include <__assert> // all public C++ headers provide the assertion handler
#include <__config>
-#include <type_traits>
+#include <__type_traits/is_arithmetic.h>
+#include <__type_traits/is_signed.h>
+#include <__type_traits/remove_cv.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
@@ -821,4 +823,8 @@ _LIBCPP_END_NAMESPACE_STD
_LIBCPP_POP_MACROS
+#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <type_traits>
+#endif
+
#endif // _LIBCPP_LIMITS
diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in
index a19a3c4..467f758 100644
--- a/libcxx/include/module.modulemap.in
+++ b/libcxx/include/module.modulemap.in
@@ -1387,7 +1387,10 @@ module std [system] {
module is_abstract { private header "__type_traits/is_abstract.h" }
module is_aggregate { private header "__type_traits/is_aggregate.h" }
module is_allocator { private header "__type_traits/is_allocator.h" }
- module is_arithmetic { private header "__type_traits/is_arithmetic.h" }
+ module is_arithmetic {
+ private header "__type_traits/is_arithmetic.h"
+ export integral_constant
+ }
module is_array { private header "__type_traits/is_array.h" }
module is_assignable { private header "__type_traits/is_assignable.h" }
module is_base_of { private header "__type_traits/is_base_of.h" }
diff --git a/libcxx/include/utility b/libcxx/include/utility
index 3cc7ce5..4de69f7 100644
--- a/libcxx/include/utility
+++ b/libcxx/include/utility
@@ -257,7 +257,6 @@ template <class T>
#include <__utility/to_underlying.h>
#include <__utility/transaction.h>
#include <__utility/unreachable.h>
-#include <type_traits>
#include <version>
// standard-mandated includes
@@ -276,6 +275,7 @@ template <class T>
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <iosfwd>
+# include <type_traits>
#endif
#endif // _LIBCPP_UTILITY