https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65291
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Last reconfirmed| |2015-03-03
CC| |manu at gcc dot gnu.org
Resolution|INVALID |---
Summary|protected using constructor |mention that default
|default arguments not |arguments of constructors
|recognized |are not inherited
Ever confirmed|0 |1
--- Comment #3 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #2)
> The C++ standard says that B inherits a constructor taking a single int, the
> default argument is not inherited, so B has no default constructor, and G++
> is correct to reject the program.
This is the key information. Couldn't g++ say something like?
b.h:7:12: note: B::B(int)
using A::A;
^
b.h:7:12: note: candidate expects 1 argument, 0 provided (default arguments
are not inherited)
BTW, clang rejects the 'using':
10 : error: using declaration cannot refer to a constructor