Open xmh0511 opened 4 months ago
CWG2871
There are plenty of other uses of the undecorated term 'constructor' in the standard that are clearly meant to include templates: [basic.scope.scope]/4, [dcl.init.aggr]/1.1, [namespace.udecl]/2 and /13, [class.mem.general]/22, various subclauses of [over.match.funcs], etc. Why is it a problem in this particular case?
There are plenty of other uses of the undecorated term 'constructor' in the standard that are clearly meant to include templates: [basic.scope.scope]/4, [dcl.init.aggr]/1.1, [namespace.udecl]/2 and /13, [class.mem.general]/22, various subclauses of [over.match.funcs], etc. Why is it a problem in this particular case?
Most are about inheriting constructors. I think there should be a concentrated issue on this.
Full name of submitter (unless configured in github; will be published with the issue): Jim X
[class.default.ctor] p1 says:
Consider this example:
#1
is ill-formed since no matching function for call to 'X::X()'. [class.default.ctor] p1 should cover this example, however,#2
is a user-declared constructor template, and the implicitly instantiated declaration is not user-declared anyway.Suggested Resolution