re PR c++/79143 ([new inheriting constructors] inheriting constructor fails with brace initialization)

PR c++/79143
	* pt.c (instantiate_class_template_1): Copy CLASSTYPE_NON_AGGREGATE
	from pattern to type.

	* g++.dg/cpp1z/pr79143.C: New test.

Co-Authored-By: Jason Merrill <jason@redhat.com>

From-SVN: r245315
This commit is contained in:
Jakub Jelinek 2017-02-09 23:12:15 +01:00 committed by Jakub Jelinek
parent a56c0ac082
commit 9bfc55d096
4 changed files with 42 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2017-02-09 Jakub Jelinek <jakub@redhat.com>
Jason Merrill <jason@redhat.com>
PR c++/79143
* pt.c (instantiate_class_template_1): Copy CLASSTYPE_NON_AGGREGATE
from pattern to type.
2017-02-09 Jason Merrill <jason@redhat.com>
PR c++/79316 - default argument in deduction guide

View File

@ -10253,6 +10253,7 @@ instantiate_class_template_1 (tree type)
TYPE_PACKED (type) = TYPE_PACKED (pattern);
SET_TYPE_ALIGN (type, TYPE_ALIGN (pattern));
TYPE_USER_ALIGN (type) = TYPE_USER_ALIGN (pattern);
CLASSTYPE_NON_AGGREGATE (type) = CLASSTYPE_NON_AGGREGATE (pattern);
if (ANON_AGGR_TYPE_P (pattern))
SET_ANON_AGGR_TYPE_P (type);
if (CLASSTYPE_VISIBILITY_SPECIFIED (pattern))

View File

@ -1,3 +1,9 @@
2017-02-09 Jakub Jelinek <jakub@redhat.com>
Jason Merrill <jason@redhat.com>
PR c++/79143
* g++.dg/cpp1z/pr79143.C: New test.
2017-02-09 Jan Hubicka <hubicka@ucw.cz>
* gcc.dg/loop-unswitch-2.c: Update testcase.

View File

@ -0,0 +1,28 @@
// PR c++/79143
// { dg-do compile }
// { dg-options "-std=c++1z" }
struct base {
base (int, int) {}
};
template<class>
struct derived : base {
using base::base;
};
template<class>
struct derived2 : base {
derived2 (int x, int y) : base (x, y) {}
};
int
main ()
{
base (13, 42);
derived<int> (13, 42);
derived2<int> (13, 42);
base{13, 42};
derived<int>{13, 42}; // { dg-bogus "too many initializers" }
derived2<int>{13, 42};
}