On Saturday, 2 January 2016 at 02:42:56 UTC, Bottled Gin wrote:
It seems like saying that a constructor with all default
arguments is not a default constructor is a distinction
without meaning. What are you doing that you would care?
The Object.factory does not seem to consider a constructor with
default arguments as a defaultConstructor. Consider the
following code snippet. It works only when I uncomment line 3.
module foo; // 1
class Foo { // 2
// this() {} // 3
this(int n=0) {} // 4
} // 5
void main() { // 6
auto obj = Object.factory("foo.Foo"); // 7
assert(obj !is null); // 8
auto foo = cast(Foo) obj; // 9
assert(foo !is null); // 10
} // 11
Well, I would definitely consider it a bug for the Object factory
to not work with a constructor with all default arguments, though
given that the default arguments are known at compile time and
not runtime, I don't know if it can actually treat a constructor
with all default arguments like a default constructor or not.
That would depend on how it works, and I'm not familiar with its
inner workings. So, you may have found a place where the
distinction between a constructor with no parameters and one with
all default arguments does matter much as it really shouldn't.
- Jonathan M Davis