PR c++/78894 - ICE with class deduction and default arg
* pt.c (build_deduction_guide): Set DECL_PRIMARY_TEMPLATE. From-SVN: r244582
This commit is contained in:
parent
5807fb918d
commit
e3aeb9d39a
|
@ -1,3 +1,8 @@
|
|||
2017-01-17 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/78894 - ICE with class deduction and default arg
|
||||
* pt.c (build_deduction_guide): Set DECL_PRIMARY_TEMPLATE.
|
||||
|
||||
2017-01-18 Markus Trippelsdorf <markus@trippelsdorf.de>
|
||||
|
||||
PR c++/77489
|
||||
|
|
|
@ -24968,6 +24968,13 @@ build_deduction_guide (tree ctor, tree outer_args, tsubst_flags_t complain)
|
|||
current_template_parms = save_parms;
|
||||
--processing_template_decl;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Copy the parms so we can set DECL_PRIMARY_TEMPLATE. */
|
||||
tparms = copy_node (tparms);
|
||||
INNERMOST_TEMPLATE_PARMS (tparms)
|
||||
= copy_node (INNERMOST_TEMPLATE_PARMS (tparms));
|
||||
}
|
||||
|
||||
tree fntype = build_function_type (type, fparms);
|
||||
tree ded_fn = build_lang_decl_loc (DECL_SOURCE_LOCATION (ctor),
|
||||
|
@ -24978,6 +24985,7 @@ build_deduction_guide (tree ctor, tree outer_args, tsubst_flags_t complain)
|
|||
DECL_TEMPLATE_RESULT (ded_tmpl) = ded_fn;
|
||||
TREE_TYPE (ded_tmpl) = TREE_TYPE (ded_fn);
|
||||
DECL_TEMPLATE_INFO (ded_fn) = build_template_info (ded_tmpl, targs);
|
||||
DECL_PRIMARY_TEMPLATE (ded_tmpl) = ded_tmpl;
|
||||
if (ci)
|
||||
set_constraints (ded_tmpl, ci);
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
// PR c++/78894
|
||||
// { dg-options -std=c++1z }
|
||||
|
||||
struct A
|
||||
{
|
||||
A ();
|
||||
};
|
||||
template <typename T>
|
||||
struct C
|
||||
{
|
||||
C (int, const T &, const A & = A ());
|
||||
};
|
||||
|
||||
C a = { 0, 0 };
|
Loading…
Reference in New Issue