[libc++] Avoid including <tuple> in compressed_pair.h
authorNikolas Klauser <nikolasklauser@berlin.de>
Sat, 17 Sep 2022 12:30:29 +0000 (14:30 +0200)
committerNikolas Klauser <nikolasklauser@berlin.de>
Sun, 18 Sep 2022 08:49:35 +0000 (10:49 +0200)
compressed_pair is widely used in the library, but most of the uses don't use the tuple parts. To avoid including <tuple> everywhere, use the forward declaration instead in compressed_pair.h

Reviewed By: ldionne, #libc

Spies: libcxx-commits

Differential Revision: https://reviews.llvm.org/D133331

39 files changed:
libcxx/include/__memory/compressed_pair.h
libcxx/include/__string/char_traits.h
libcxx/include/functional
libcxx/test/libcxx/transitive_includes/cxx2b/expected.algorithm
libcxx/test/libcxx/transitive_includes/cxx2b/expected.any
libcxx/test/libcxx/transitive_includes/cxx2b/expected.barrier
libcxx/test/libcxx/transitive_includes/cxx2b/expected.bitset
libcxx/test/libcxx/transitive_includes/cxx2b/expected.condition_variable
libcxx/test/libcxx/transitive_includes/cxx2b/expected.deque
libcxx/test/libcxx/transitive_includes/cxx2b/expected.experimental_algorithm
libcxx/test/libcxx/transitive_includes/cxx2b/expected.forward_list
libcxx/test/libcxx/transitive_includes/cxx2b/expected.list
libcxx/test/libcxx/transitive_includes/cxx2b/expected.memory
libcxx/test/libcxx/transitive_includes/cxx2b/expected.queue
libcxx/test/libcxx/transitive_includes/cxx2b/expected.random
libcxx/test/libcxx/transitive_includes/cxx2b/expected.set
libcxx/test/libcxx/transitive_includes/cxx2b/expected.shared_mutex
libcxx/test/libcxx/transitive_includes/cxx2b/expected.stack
libcxx/test/libcxx/transitive_includes/cxx2b/expected.string
libcxx/test/libcxx/transitive_includes/cxx2b/expected.system_error
libcxx/test/libcxx/transitive_includes/cxx2b/expected.unordered_set
libcxx/test/libcxx/transitive_includes/cxx2b/expected.vector
libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp
libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort_comp.pass.cpp
libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/bind_return_type.pass.cpp
libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/specialization.pass.cpp
libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isplace/specialization.pass.cpp
libcxx/test/std/utilities/function.objects/func.identity/identity.pass.cpp
libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.verify.cpp
libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp
libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp
libcxx/test/std/utilities/function.objects/range.cmp/equal_to.pass.cpp
libcxx/test/std/utilities/function.objects/range.cmp/greater.pass.cpp
libcxx/test/std/utilities/function.objects/range.cmp/greater_equal.pass.cpp
libcxx/test/std/utilities/function.objects/range.cmp/less.pass.cpp
libcxx/test/std/utilities/function.objects/range.cmp/less_equal.pass.cpp
libcxx/test/std/utilities/function.objects/range.cmp/not_equal_to.pass.cpp
libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.pass.cpp
libcxx/test/support/container_test_types.h

index 7346c8d..9dd42f8 100644 (file)
 #define _LIBCPP___MEMORY_COMPRESSED_PAIR_H
 
 #include <__config>
+#include <__fwd/get.h>
+#include <__fwd/tuple.h>
+#include <__tuple/tuple_indices.h>
 #include <__type_traits/dependent_type.h>
 #include <__utility/forward.h>
 #include <__utility/move.h>
-#include <tuple> // needed in c++03 for some constructors
+#include <__utility/piecewise_construct.h>
 #include <type_traits>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
index a35642b..6fbd0e1 100644 (file)
 #include <__algorithm/find_end.h>
 #include <__algorithm/find_first_of.h>
 #include <__algorithm/min.h>
+#include <__compare/ordering.h>
 #include <__config>
 #include <__functional/hash.h>
 #include <__iterator/iterator_traits.h>
-#include <compare>
+#include <__type_traits/is_constant_evaluated.h>
+#include <cstddef>
 #include <cstdint>
 #include <cstdio>
-#include <cstring>
 #include <iosfwd>
-#include <type_traits>
 
 #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 #   include <cwchar> // for wmemcpy
index ab2c62d..4c4e02d 100644 (file)
@@ -534,7 +534,6 @@ POLICY:  For non-variadic implementations, the number of arguments is limited
 #include <concepts>
 #include <exception>
 #include <memory> // TODO: find out why removing this breaks the modules build
-#include <tuple>
 #include <type_traits>
 #include <typeinfo>
 #include <version>
@@ -544,6 +543,7 @@ POLICY:  For non-variadic implementations, the number of arguments is limited
 #endif
 
 #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+#  include <tuple>
 #  include <utility>
 #endif
 
index af06e12..53858f0 100644 (file)
@@ -1,7 +1,5 @@
 bit
 climits
-cmath
-compare
 concepts
 cstddef
 cstdint
@@ -12,6 +10,5 @@ initializer_list
 iosfwd
 limits
 new
-tuple
 type_traits
 version
index 626b4a4..49feb68 100644 (file)
@@ -1,7 +1,5 @@
 atomic
 climits
-cmath
-compare
 concepts
 cstddef
 cstdint
@@ -15,7 +13,6 @@ limits
 new
 ratio
 stdexcept
-tuple
 type_traits
 typeinfo
 version
index 83db015..20025bd 100644 (file)
@@ -1,7 +1,5 @@
 atomic
 climits
-cmath
-compare
 cstddef
 cstdint
 cstdlib
@@ -12,6 +10,5 @@ iosfwd
 limits
 new
 ratio
-tuple
 type_traits
 version
index 38ee5a9..0f51df2 100644 (file)
@@ -14,8 +14,9 @@
 //   minmax(const T& a, const T& b, Compare comp);
 
 #include <algorithm>
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <utility>
 
 #include "test_macros.h"
 
index 780cd6e..0ba6e01 100644 (file)
 // only SFINAE away when too few arguments are provided. Otherwise they should
 // be well formed and should ignore any additional arguments.
 
+#include <cassert>
 #include <functional>
 #include <type_traits>
-#include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 
index cd0457f..32279ac 100644 (file)
 //   be treated as a subexpression in a bind call.
 //   https://llvm.org/PR51753
 
-#include <functional>
 #include <cassert>
+#include <functional>
 #include <type_traits>
+#include <utility>
 
 struct MyBind {
     int operator()(int x, int y) const { return 10*x + y; }
index e0a6c6a..0e0437b 100644 (file)
 //   to indicate that T should be treated as a placeholder type.
 //   https://llvm.org/PR51753
 
-#include <functional>
 #include <cassert>
+#include <functional>
 #include <type_traits>
+#include <utility>
 
 struct My2 {};
 template<> struct std::is_placeholder<My2> : std::integral_constant<int, 2> {};
index 9d6d123..b1bf69e 100644 (file)
@@ -15,8 +15,9 @@
 // This test runs in C++03, but we have deprecated using std::function in C++03.
 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS -D_LIBCPP_ENABLE_CXX03_FUNCTION
 
-#include <functional>
 #include <cassert>
+#include <functional>
+#include <utility>
 
 #include "test_macros.h"
 #include "count_new.h"
index 9588313..6d20754 100644 (file)
 
 // ranges::equal_to
 
+#include <cassert>
 #include <functional>
 #include <type_traits>
-#include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 #include "compare_types.h"
index d63b245..002ec10 100644 (file)
 
 // ranges::greater
 
+#include <cassert>
 #include <functional>
 #include <type_traits>
-#include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 #include "compare_types.h"
index ffa3c94..ad24a98 100644 (file)
 
 // ranges::greater_equal
 
+#include <cassert>
 #include <functional>
 #include <type_traits>
-#include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 #include "compare_types.h"
index 61feee4..5afb7e0 100644 (file)
 
 // ranges::less
 
+#include <cassert>
 #include <functional>
 #include <type_traits>
-#include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 #include "compare_types.h"
index 2c77048..3aa903f 100644 (file)
 
 // ranges::less_equal
 
+#include <cassert>
 #include <functional>
 #include <type_traits>
-#include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 #include "compare_types.h"
index f4ce329..4b46bae 100644 (file)
 
 // ranges::not_equal_to
 
+#include <cassert>
 #include <functional>
 #include <type_traits>
-#include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 #include "compare_types.h"
index 4fbbbb1..23c8c64 100644 (file)
 
 // raw_storage_iterator
 
+#include <cassert>
 #include <memory>
 #include <type_traits>
-#include <cassert>
+#include <utility>
 
 #include "test_macros.h"
 #include <MoveOnly.h>
index baf1b50..11c1f9a 100644 (file)
  *
  */
 
-#include <functional>
 #include <cassert>
+#include <functional>
 #include <new>
+#include <utility>
 
 #include "test_macros.h"