The "opCast" overloading?
Unknown W. Brackets
unknown at simplemachines.org
Wed Nov 22 20:54:33 PST 2006
I think the problem with that is simply:
class C
{
void opCast(out long l);
void opCast(out int i);
}
C c = new C();
short s = cast(short) c;
What happens? I would personally say, an error. But someone will
always be mad about that.
-[Unknown]
> "Arlen Albert Keshabyan" <arlen.albert at gmail.com> wrote in message
> news:ejvjgp$2hgk$1 at digitaldaemon.com...
>> Hello Walter!
>> The D language is just a miracle. Sure, you already know about that :).
>> I know the problem of "opCast" cannot be overloaded so far. But I'm sure
>> there
>> must be a way to do that somehow. That's the question of a semantic.
>> Right?
>> May we hope it's going to happen soon? I'm asking you the question because
>> you're the Father of D.
>
> Many people have suggested it, by i.e.
>
> void opCast(out int x)
> {
> // put the cast result in x rather than returning it
> }
>
> Which would allow for overloading by type, but also has the disadvantage
> that you wouldn't be able to use cast(int)Object as a temporary. :S
>
> Frankly, I don't see the need for it. D isn't trying to be C++, where you
> can define types which are just as "integrated" into the language as the
> standard types. You can't have opAssign, or opDeref or opAddressOf, and so
> the "boundary" that D classes would have to cross to get to the kind of
> integration of C++ classes is so large, that allowing overloading of opCast
> just doesn't seem like it'd do much. (And to tell you the truth, I wouldn't
> really want to see it either!)
>
> The convention in D is instead to have "toType" methods which take the place
> of a cast. I.e. toString, toInt, toOtherClassType etc.
>
>
More information about the Digitalmars-d
mailing list