We have created a situation where it takes considerably more effort to make the decision to initialize, than the decision not to. Once an object steps out of the PODS mold, initializing it requires care in making sure every element appears on the ctor initializer list. While this is not a problem with trivial classes, consider classes consisting of many data elements, such as business objects. We are now creating a maintenance headache. To add or modify a field in a class, each constructor must be changed by hand.
Failure can cause unpredictable results.
The sheer bulk of repetitive coding hides any significant initialization. I recommend that we fix this usability problem by adding a minor semantic change to the ctor initializer list. T. Yet the syntax is legal, only the semantics are illegal. So this change provides not new syntax. This would allow bases and members that require explicit initializer to be named explicitly in the list.