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

Reply via email to