From 7a3f46d59e7832c22040dfa17b416c2b130263b4 Mon Sep 17 00:00:00 2001 From: Nina Dinka Ranns Date: Fri, 19 Jul 2019 08:52:50 +0000 Subject: [PATCH] PR c++/63149 - wrong auto deduction from braced-init-list 2019-06-04 Nina Dinka Ranns gcc/cp/ * pt.c (listify_autos): Use non cv qualified auto_node in std::initializer_list. testsuite/ * g++.dg/cpp0x/initlist-deduce2.C: New test. From-SVN: r273595 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 2 +- gcc/testsuite/g++.dg/cpp0x/initlist-deduce2.C | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/initlist-deduce2.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6d2f73106bae..71bddd7d40d0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2019-07-19 Nina Dinka Ranns + + PR c++/63149 - Wrong auto deduction from braced-init-list. + * pt.c (listify_autos): use non cv qualified auto_node in + std::initializer_list. + 2019-07-01 Marek Polacek Backported from mainline diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 426700a7211b..b9137aa0a829 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -26851,7 +26851,7 @@ listify (tree arg) static tree listify_autos (tree type, tree auto_node) { - tree init_auto = listify (auto_node); + tree init_auto = listify (strip_top_quals (auto_node)); tree argvec = make_tree_vec (1); TREE_VEC_ELT (argvec, 0) = init_auto; if (processing_template_decl) diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-deduce2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-deduce2.C new file mode 100644 index 000000000000..dbf68a40c856 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist-deduce2.C @@ -0,0 +1,8 @@ +// Test for PR63149 +// { dg-do compile { target c++11 } } + +#include + +const auto r = { 1, 2, 3 }; +using X = decltype(r); +using X = const std::initializer_list; -- 2.47.2