PR c++/84080 - ICE with return type deduction and specialization.

* pt.c (determine_specialization): Check uses_template_parms.

From-SVN: r257630
This commit is contained in:
Jason Merrill 2018-02-13 10:57:00 -05:00 committed by Jason Merrill
parent ff67aff425
commit 9ef86762aa
3 changed files with 14 additions and 0 deletions

View File

@ -1,5 +1,8 @@
2018-02-13 Jason Merrill <jason@redhat.com>
PR c++/84080 - ICE with return type deduction and specialization.
* pt.c (determine_specialization): Check uses_template_parms.
Fix more variadic capture issues.
* pt.c (find_parameter_packs_r): Also look at explicit captures.
(check_for_bare_parameter_packs): Check current_class_type for

View File

@ -2203,6 +2203,11 @@ determine_specialization (tree template_id,
specialize TMPL will produce DECL. */
continue;
if (uses_template_parms (targs))
/* We deduced something involving 'auto', which isn't a valid
template argument. */
continue;
/* Remove, from the set of candidates, all those functions
whose constraints are not satisfied. */
if (flag_concepts && !constraints_satisfied_p (fn, targs))

View File

@ -0,0 +1,6 @@
// PR c++/84080
// { dg-do compile { target c++14 } }
template <int i, typename T> T foo();
template <> auto foo<0>() { return 42; } // { dg-error "does not match" }