From: Paolo Carlini Date: Fri, 4 Aug 2017 22:13:46 +0000 (+0000) Subject: re PR c++/79790 ([C++17] ICE class template argument deduction failed) X-Git-Tag: upstream/12.2.0~37772 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=67695c075dfa16cc461d6f245d0544078485f9fe;p=platform%2Fupstream%2Fgcc.git re PR c++/79790 ([C++17] ICE class template argument deduction failed) /cp 2017-08-04 Paolo Carlini PR c++/79790 * pt.c (do_class_deduction): Handle the case of no viable implicit deduction guides; simplify the code generating implicit deduction guides. /testsuite 2017-08-04 Paolo Carlini PR c++/79790 * g++.dg/cpp1z/class-deduction42.C: New. From-SVN: r250882 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 041c6c4..f405108 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2017-08-04 Paolo Carlini + + PR c++/79790 + * pt.c (do_class_deduction): Handle the case of no viable implicit + deduction guides; simplify the code generating implicit deduction + guides. + 2017-08-03 Paolo Carlini PR c++/71440 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index ee4e6b1..bd61438 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -25452,11 +25452,7 @@ do_class_deduction (tree ptype, tree tmpl, tree init, int flags, if (gtype) { tree guide = build_deduction_guide (gtype, outer_args, complain); - if ((flags & LOOKUP_ONLYCONVERTING) - && DECL_NONCONVERTING_P (STRIP_TEMPLATE (guide))) - elided = true; - else - cands = lookup_add (guide, cands); + cands = lookup_add (guide, cands); } } @@ -25467,6 +25463,12 @@ do_class_deduction (tree ptype, tree tmpl, tree init, int flags, "user-declared constructors", type); return error_mark_node; } + else if (!cands && call == error_mark_node) + { + error ("cannot deduce template arguments of %qT, as it has no viable " + "deduction guides", type); + return error_mark_node; + } if (call == error_mark_node) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4203037..c936479 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-08-04 Paolo Carlini + + PR c++/79790 + * g++.dg/cpp1z/class-deduction42.C: New. + 2017-08-04 Yury Gribov PR tree-optimization/57371