On Friday, 6 November 2020 at 15:06:18 UTC, Andrey Zherikov wrote:
On Friday, 6 November 2020 at 14:58:40 UTC, Jesse Phillips wrote:
On Friday, 6 November 2020 at 14:20:40 UTC, Andrey Zherikov wrote:
This issue seems hit the inability to implicitly convert custom types. May be it makes more sense to ask in a separate thread.

The return type must be the same for all execution paths.

Result!void is a different type from Result!int. You aren't passing a 'Result' because that doesn't exist as a type.

To clarify my statement:
Yes, Result!void and Result!int are different types but I couldn't find a way to implicitly convert one to another.

Putting aside D not providing implicit conversion to custom types.

I'm curious what your semantics would be.

# Result!void => Result!int

How does the type know it can convert to int, or string, or Foo?

What does it mean for a void to be an int?

# Result!int => Result!void

If you have something, what does it mean to go to not having that something. Would you really want to implicitly lose that something?

Reply via email to