A implicit default constructor has an empty body and an empty initializer list (primitive types undefined, and the default constructor is called for user defined types).
This post says
MyClass *c = new MyClass();
does indeed do a member-wise value-initialization, but what is the point of calling the default constructor when doing
MyClass c;
?
Is the implicit default constructor called, to ensure that the default constructors for user defined types (which might have non-trivial default constructors) are called?
Update
Seems that after the compiler-generated implicit default constructor is called, the object might not be consistently instantiated, i.e. primitive types undefined, and user defined types might (or might not be) in a known state depending on if the programmer provided default constructors.
Why then does the compiler generate an implicit default constructor which when called might instantiate an object in an unknown state?