On 6/17/21 1:46 PM, Steven Schveighoffer wrote:

> Implicit construction is supported:
>
> struct Foo
> {
>     int x;
>     this(int y) { x = y; }
> }
>
> Foo f = 5; // ok implicit construction

That's so unlike the rest of the language that I consider it to be a bug. :) Really, why? What if the expression is more complicated:

int i() {
  return 1;
}

  Foo f = i();

OK, that works as well. Wow!

But the following doesn't and is what I think Walter has been trying to prevent:

struct Foo
{
   int x;
   this(int y) { x = y; }
}

void foo(Foo) {
}

void main() {
  foo(42);    // COMPILATION ERROR
}

What's the difference? In both cases an int is being converted to a Foo. I think the "working" case is against the design of D.

Likely there is a subtlety that I am missing...

Ali

Reply via email to