re PR c++/66421 (G++ fails compilation when assigning tuple created with variadic...
authorPaolo Carlini <paolo.carlini@oracle.com>
Wed, 8 Jul 2015 16:08:10 +0000 (16:08 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 8 Jul 2015 16:08:10 +0000 (16:08 +0000)
2015-07-08  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/66421
* g++.dg/cpp0x/auto45.C: New.

From-SVN: r225563

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/auto45.C [new file with mode: 0644]

index b288f0d7490949047e471d827c9bc3a8e18d8ef4..bff49446c761a3f54387820ab59f96dd14255bfb 100644 (file)
@@ -1,3 +1,8 @@
+2015-07-08  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/66421
+       * g++.dg/cpp0x/auto45.C: New.
+
 2015-07-08  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR middle-end/66334
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto45.C b/gcc/testsuite/g++.dg/cpp0x/auto45.C
new file mode 100644 (file)
index 0000000..bc0d5b8
--- /dev/null
@@ -0,0 +1,21 @@
+// PR c++/66421
+// { dg-do compile { target c++11 } }
+
+template<typename... T> struct tuple { };
+
+template<typename... T> tuple<T...> make_tuple(T&&...) { return {}; }
+
+template <typename... Params>
+void foo(Params... params) {
+    auto t = make_tuple((int)params...);
+}
+
+template <typename... Params>
+void bar(Params... params) {
+  tuple<decltype((int)params)...> t = make_tuple((int)params...);
+}
+
+int main() {
+    foo(1,2,3);
+    bar(1,2,3);
+}