[libcxx-commits] [libcxx] [libc++] Granularize `<optional>` (PR #206644)

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jun 30 00:18:13 PDT 2026


================
@@ -258,68 +258,34 @@ namespace std {
 #if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
 #  include <__cxx03/__config>
 #else
-#  include <__assert>
-#  include <__compare/compare_three_way_result.h>
-#  include <__compare/ordering.h>
-#  include <__compare/three_way_comparable.h>
-#  include <__concepts/invocable.h>
 #  include <__config>
-#  include <__exception/exception.h>
-#  include <__functional/hash.h>
-#  include <__functional/invoke.h>
-#  include <__functional/unary_function.h>
-#  include <__fwd/format.h>
-#  include <__fwd/functional.h>
-#  include <__iterator/bounded_iter.h>
-#  include <__iterator/capacity_aware_iterator.h>
-#  include <__memory/addressof.h>
-#  include <__memory/construct_at.h>
-#  include <__ranges/enable_borrowed_range.h>
-#  include <__ranges/enable_view.h>
-#  include <__tuple/sfinae_helpers.h>
-#  include <__type_traits/add_pointer.h>
-#  include <__type_traits/conditional.h>
-#  include <__type_traits/conjunction.h>
 #  include <__type_traits/decay.h>
-#  include <__type_traits/disjunction.h>
 #  include <__type_traits/enable_if.h>
-#  include <__type_traits/integral_constant.h>
-#  include <__type_traits/invoke.h>
-#  include <__type_traits/is_array.h>
-#  include <__type_traits/is_assignable.h>
 #  include <__type_traits/is_constructible.h>
-#  include <__type_traits/is_convertible.h>
-#  include <__type_traits/is_core_convertible.h>
-#  include <__type_traits/is_destructible.h>
-#  include <__type_traits/is_function.h>
-#  include <__type_traits/is_nothrow_assignable.h>
-#  include <__type_traits/is_nothrow_constructible.h>
-#  include <__type_traits/is_object.h>
-#  include <__type_traits/is_reference.h>
-#  include <__type_traits/is_same.h>
-#  include <__type_traits/is_scalar.h>
-#  include <__type_traits/is_swappable.h>
-#  include <__type_traits/is_trivially_assignable.h>
-#  include <__type_traits/is_trivially_constructible.h>
-#  include <__type_traits/is_trivially_destructible.h>
-#  include <__type_traits/is_trivially_relocatable.h>
-#  include <__type_traits/negation.h>
 #  include <__type_traits/reference_constructs_from_temporary.h>
 #  include <__type_traits/remove_const.h>
-#  include <__type_traits/remove_cv.h>
-#  include <__type_traits/remove_cvref.h>
-#  include <__type_traits/remove_reference.h>
-#  include <__utility/declval.h>
 #  include <__utility/forward.h>
 #  include <__utility/in_place.h>
-#  include <__utility/move.h>
-#  include <__utility/swap.h>
-#  include <__verbose_abort>
 #  include <initializer_list>
 #  include <version>
 
-// standard-mandated includes
+#  include <__optional/common.h>
+#  include <__optional/comparison.h>
+#  include <__optional/hash.h>
+#  include <__optional/optional.h>
+#  include <__optional/optional_ref.h>
+#  include <__optional/swap.h>
 
+// TODO: Certain headers rely on these transitive includes
+#  include <__type_traits/conditional.h>
+#  include <__type_traits/invoke.h>
+#  include <__type_traits/is_object.h>
+#  include <__type_traits/is_reference.h>
+#  include <__type_traits/remove_cvref.h>
+#  include <__utility/declval.h>
+#  include <__utility/move.h>
----------------
philnik777 wrote:

Why is this not cleaned up?

https://github.com/llvm/llvm-project/pull/206644


More information about the libcxx-commits mailing list