You are right, I missed this feature. However, it is still a matter of
convenience. Besides passing list of parameters, you also need to ensure
the delegating constructor signature is not colliding with any other
constructor, requiring constructions like this:
class MyClass {
public:
const int a, b, c;
MyClass(int someBaseValue)
: MyClass(SomeHeavyOperation(someBaseValue), ConstructorTag())
{}
private:
struct ConstructorTag {};
MyClass(int someDerivedValue, ConstructorTag) :
a(someDerivedValue * 2),
b(someDerivedValue / 3),
c(someDerivedValue + 4)
{}
};
or introducing dedicated structure for passing construction parameters
in, which is quite verbose.
Introducing delegated constructors made much code less verbose.
Introducing variables in member initializer list could make the next
step to make it even neater.