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