[Lldb-commits] [clang] [clang-tools-extra] [compiler-rt] [flang] [lld] [lldb] [llvm] [mlir] [openmp] Treewide C++26/2d fixes (PR #223284)

via lldb-commits lldb-commits at lists.llvm.org
Sat Sep 26 19:22:37 PDT 2026


================
@@ -136,11 +136,17 @@ common::IfNoLvalue<TOV, FROMV> MoveVariant(FROMV &&u) {
 // types.  E.g.,
 //   CombineTuples<std::tuple<char, int>, std::tuple<float, double>>
 // is std::tuple<char, int, float, double>.
-template <typename... TUPLES> struct CombineTuplesHelper {
-  static decltype(auto) f(TUPLES *...a) {
-    return std::tuple_cat(std::move(*a)...);
-  }
-  using type = decltype(f(static_cast<TUPLES *>(nullptr)...));
+template <typename... TUPLES> struct CombineTuplesHelper;
+template <> struct CombineTuplesHelper<> {
+  using type = std::tuple<>;
+};
+template <typename... Ts> struct CombineTuplesHelper<std::tuple<Ts...>> {
+  using type = std::tuple<Ts...>;
+};
+template <typename... T1s, typename... T2s, typename... Rest>
+struct CombineTuplesHelper<std::tuple<T1s...>, std::tuple<T2s...>, Rest...> {
+  using type =
+      typename CombineTuplesHelper<std::tuple<T1s..., T2s...>, Rest...>::type;
----------------
rdong8 wrote:

Related to the issue of incomplete types. The old one stopped working when passed tuples that contain a type that transitively contains a container whose value type is incomplete at time of instantiation

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


More information about the lldb-commits mailing list