Skip to content

CWG2871 [class.default.ctor] p1 should cover the constructor template  #510

Description

@xmh0511

Full name of submitter (unless configured in github; will be published with the issue): Jim X

[class.default.ctor] p1 says:

If there is no user-declared constructor for class X, a non-explicit constructor having no parameters is implicitly declared as defaulted ([dcl.fct.def]).

Consider this example:

struct X{
  template<class U> X(U){} // #2
};
int main(){
   X x;  // #1
}

#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

If there is no user-declared constructor or constructor template for class X, a non-explicit constructor having no parameters is implicitly declared as defaulted ([dcl.fct.def]).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions