On Fri, Dec 7, 2012 at 3:13 AM, Matthias Klose <d...@ubuntu.com> wrote: > Am 07.12.2012 06:05, schrieb Jason Merrill: >> It's perfectly OK to initialize a base class of abstract type; it's only an >> error to create a full object of such a type. So this patch moves the check >> from more generic initialization code out into a function that's definitely >> creating a new object. >> >> Tested x86_64-pc-linux-gnu, applying to trunk and 4.7. > > this doesn't build on the branch: > > ../gcc/cp/tree.c: In function 'build_aggr_init_expr': > ../gcc/cp/tree.c:399:1: error: parameter name omitted > > this fixes the bootstrap, currently running the testsuite. > > --- cp/tree.c~ 2012-12-07 10:01:16.665415647 +0100 > +++ cp/tree.c 2012-12-07 10:11:01.373410862 +0100 > @@ -396,7 +396,8 @@ > callable. */ > > tree > -build_aggr_init_expr (tree type, tree init, tsubst_flags_t /*complain*/) > +build_aggr_init_expr (tree type, tree init, > + tsubst_flags_t complain ATTRIBUTE_UNUSED) > { > tree fn; > tree slot; >
We should definitely teach the compiler to accept the former and not be silly in requiring the latter when C++. -- Gaby