PR c++/89966 - error with non-type auto tparm.
My patch for PR 86932 broke this testcase by passing tf_partial to coerce_template_template_parms, which prevented do_auto_deduction from actually replacing the auto. * pt.c (do_auto_deduction): Clear tf_partial. From-SVN: r270160
This commit is contained in:
parent
17838af989
commit
950b198d4a
@ -1,3 +1,8 @@
|
|||||||
|
2019-04-04 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
PR c++/89966 - error with non-type auto tparm.
|
||||||
|
* pt.c (do_auto_deduction): Clear tf_partial.
|
||||||
|
|
||||||
2019-04-04 Jason Merrill <jason@redhat.com>
|
2019-04-04 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/86986 - ICE with TTP with parameter pack.
|
PR c++/86986 - ICE with TTP with parameter pack.
|
||||||
|
@ -27504,6 +27504,10 @@ do_auto_deduction (tree type, tree init, tree auto_node,
|
|||||||
if (init && undeduced_auto_decl (init))
|
if (init && undeduced_auto_decl (init))
|
||||||
return type;
|
return type;
|
||||||
|
|
||||||
|
/* We may be doing a partial substitution, but we still want to replace
|
||||||
|
auto_node. */
|
||||||
|
complain &= ~tf_partial;
|
||||||
|
|
||||||
if (tree tmpl = CLASS_PLACEHOLDER_TEMPLATE (auto_node))
|
if (tree tmpl = CLASS_PLACEHOLDER_TEMPLATE (auto_node))
|
||||||
/* C++17 class template argument deduction. */
|
/* C++17 class template argument deduction. */
|
||||||
return do_class_deduction (type, tmpl, init, flags, complain);
|
return do_class_deduction (type, tmpl, init, flags, complain);
|
||||||
|
6
gcc/testsuite/g++.dg/cpp1z/nontype-auto15.C
Normal file
6
gcc/testsuite/g++.dg/cpp1z/nontype-auto15.C
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// PR c++/89966
|
||||||
|
// { dg-do compile { target c++17 } }
|
||||||
|
|
||||||
|
template < auto a0 >
|
||||||
|
void f0() { }
|
||||||
|
void f0_call() { f0< sizeof(int) >(); }
|
Loading…
Reference in New Issue
Block a user