On Mon, 30 Nov 2009 02:20:40 +0300, bearophile <[email protected]>
wrote:
Andrei Alexandrescu:
c) If a class doesn't define any constructors but does add at least a
non-static field -> undecided.
Does 'undecided' mean 'compile-time error'?"
Bye,
bearophile
I think it means they are not decided whether it should inherit
constructors.
Back on topic, I do think inheriting constructors is a good idea, even in
presence of additional fields (why not?)
I also think constructor inheritance could be implemented without any
changes to the language the following way:
this(Args...)(Args args) if (__traits(compiles, super(args)))
{
super(args);
// initialize additional fields, if any present
// and/or do some post-construction logic
}
Why create new rules? :)
The trivial way could be even simplified like this:
// just a basic idea
template InheritCtors()
{
this(Args...)(Args args) if (__traits(compiles, super(args)))
{
super(args);
static assert (this.tupleof == super.typleof); // check that no
additional members present
}
}
class Foo { /* a few different ctors */ }
class Bar : Foo
{
mixin InheritCtors(); // VoilĂ !
}