Why not move cast to the standard library?

Jeremie Pelletier jeremiep at gmail.com
Thu Sep 24 10:57:30 PDT 2009


grauzone wrote:
> Andrei Alexandrescu wrote:
>> downs wrote:
>>> Andrei Alexandrescu wrote:
>>>> downs wrote:
>>>>> With all the neat template tricks we have in 2.0, and since we're
>>>>> widely redefining the syntax anyway, why not deprecate the current
>>>>> cast syntax and move it into object.d as a library function?
>>>>>
>>>>> So instead of cast(Foo) bar; you would say cast!Foo(bar); .. save on a
>>>>> keyword and demonstrate language power at the same time.
>>>>>
>>>>> What sez ye?
>>>> What would the implementation look like?
>>>>
>>>> Andrei
>>>
>>> Unions, and LOTS of static ifs. :)
>>
>> Unions won't work for casting class objects and interfaces because 
>> those do pointer adjustments. I think cast must be a primitive.
> 
> When casting interfaces and objects, the primitive cast just calls into 
> runtime (functions like _d_dynamic_cast etc.). I don't see a reason why 
> cast implemented as templated function couldn't call those runtime 
> functions directly.
> 
>> Andrei

What about cast(int) or cast(string) and whatnot then? You'd have 
cast!A(B) for classes and cast(int) for values, that would be backwards.

Jeremie



More information about the Digitalmars-d mailing list