[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