Return values from auto function

Jesse Phillips Jesse.K.Phillips+D at gmail.com
Sat Nov 7 01:50:15 UTC 2020


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?



More information about the Digitalmars-d-learn mailing list