PR c++/82152 - ICE with class deduction and inherited ctor.
* pt.c (do_class_deduction): Ignore inherited ctors. From-SVN: r259133
This commit is contained in:
parent
68218b64ed
commit
be9d76c5bf
3 changed files with 22 additions and 0 deletions
|
@ -1,5 +1,8 @@
|
|||
2018-04-05 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/82152 - ICE with class deduction and inherited ctor.
|
||||
* pt.c (do_class_deduction): Ignore inherited ctors.
|
||||
|
||||
PR c++/84665 - ICE with array of empty class.
|
||||
* decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
|
||||
|
||||
|
|
|
@ -26217,6 +26217,10 @@ do_class_deduction (tree ptype, tree tmpl, tree init, int flags,
|
|||
// FIXME cache artificial deduction guides
|
||||
for (ovl_iterator iter (CLASSTYPE_CONSTRUCTORS (type)); iter; ++iter)
|
||||
{
|
||||
/* Skip inherited constructors. */
|
||||
if (iter.using_p ())
|
||||
continue;
|
||||
|
||||
tree guide = build_deduction_guide (*iter, outer_args, complain);
|
||||
if (guide == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
|
15
gcc/testsuite/g++.dg/cpp1z/class-deduction54.C
Normal file
15
gcc/testsuite/g++.dg/cpp1z/class-deduction54.C
Normal file
|
@ -0,0 +1,15 @@
|
|||
// PR c++/82152
|
||||
// { dg-additional-options -std=c++17 }
|
||||
|
||||
struct Base {};
|
||||
|
||||
template<typename T>
|
||||
struct Derived : public Base {
|
||||
using Base::Base;
|
||||
};
|
||||
|
||||
Derived() -> Derived< void >;
|
||||
|
||||
int main() {
|
||||
Derived x;
|
||||
}
|
Loading…
Add table
Reference in a new issue