A
default constructor for a class
X
is a constructor of class
X
for which each parameter
that is not a function parameter pack
has a default argument
(including the case of a constructor with no parameters)
. If a class does not have
a user-declared constructor or constructor template,
and the class is not an anonymous union,
a non-explicit constructor having no parameters is implicitly declared
as defaulted (
[dcl.fct.def])
. An implicitly-declared default constructor is an
inline public member of its class
.