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

Reply via email to