On Friday, 18 October 2013 at 18:59:46 UTC, Andrei Alexandrescu wrote:

I think one good compromise is to stick with the exact amount of flow control we currently have in constructors (which is primitive but quite adequate), and use that creatively. It's already implemented and works, so the implementation costs of applying it to other cases should be low.

Andrei

Do you mean preventing calling constructor (from another constructor) within one control branch? May be this will be case #13.

import std.stdio;

extern(C) void _D4main1A6__ctorMFiZC4main1A(A a, int i);

class A
{
   this(int i) { writeln("reached"); }
   this()
   {
      int i = 1;
      //if (i)
      //   this(i); // Error: one path skips constructor
      if (i)
         _D4main1A6__ctorMFiZC4main1A(this, i);
      if (i)
         auto dg = __traits(getOverloads, this, "__ctor")[0](i);
   }
}

void main()
{
   new A;
}

Reply via email to