@@ -1107,6 +1107,7 @@ cp_genericize_r (tree *stmt_p, int *walk
if (wtd->handle_invisiref_parm_p && is_invisiref_parm (stmt))
{
*stmt_p = convert_from_reference (stmt);
+ p_set->add (*stmt_p);
*walk_subtrees = 0;
return NULL;
}
@@ -0,0 +1,21 @@
+// PR c++/79205
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+template <unsigned long, typename...> struct B;
+template <unsigned long I, typename H> struct B<I, H> { int b; };
+template <typename... E> struct C { B<0, E...> c; C (C &) = default; C (C &&); };
+template <typename> struct tuple_size;
+template <> struct tuple_size<C<int>> { static constexpr int value = 1; };
+template <int, typename> struct tuple_element;
+template <typename H, typename... T>
+struct tuple_element<0, C<H, T...>> { typedef int type; };
+template <int, typename... E>
+int &&get (C<E...> &&);
+
+int
+foo (C<int> t)
+{
+ auto[x0] = t; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+ return x0;
+}
@@ -0,0 +1,12 @@
+// PR c++/79205
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+#include <tuple>
+
+int
+foo (std::tuple<int> t)
+{
+ auto [x0] = t; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+ return x0;
+}