Toughts on alias this. (implict converstion in general)

12345swordy alexanderheistermann at gmail.com
Wed May 13 22:53:47 UTC 2020


On Wednesday, 13 May 2020 at 22:38:26 UTC, 12345swordy wrote:
> On Wednesday, 13 May 2020 at 22:27:00 UTC, Timon Gehr wrote:
>> On 13.05.20 23:06, 12345swordy wrote:
>>> As I am working on the tuple dip and porting Timon Gehr work, 
>>> I noticed that there is a section on alias this which got me 
>>> thinking. I really don't want the ability to alias this the 
>>> tuple itself as that could cause problems in the future. It 
>>> seems that Walter share the same negative sentiment regarding 
>>> alias this. We could introduce implicit constructors for 
>>> structs/classes for rvalues and implicitOP for lvalues by 
>>> having structs copy it and having classes GC allocate it. 
>>> That way we could introduce implicit conversion without 
>>> having the rest of the baggage that alias this 
>>> introduce.(Credit for manu for coming up the idea). Of course 
>>> this is all opt-in from the developer side to prevent 
>>> unintentional function design.
>>> 
>>> 
>>> - Alex
>>
>> Do you understand how std.typecons.Tuple works?
>> Do you understand _why_ there is a section in the DIP related 
>> to alias this?
> From my understanding std.typecons.Tuple is a struct that is 
> generated from templates. Though I don't understand why there 
> is a section for alias this though. For the types themselves in 
> the tuple? Sure.
> For the tuple itself? I literally have no idea.
>
> I was planing to post the first draft and ping you on this some 
> time in the future.
>
> -Alex
Ok I take back what I had said about the types in the tuple, 
because it quite apparent that it is a lot more difficult then 
expected.

Let type a, b, x, y exist

x contains alias this of a
y contains alias this of b

function f() exist with two overloads.

f((a, y)) takes the tuple of a and y
f((x, b)) takes the tuple of x and b

you pass tuple (x, y) to function f.

What exact function does it call in this case?
To be frank: I have no idea in this case.




More information about the Digitalmars-d mailing list