bearophile wrote:
Bill Baxter:
The first time I tried to use it my thought was to do
typedef Exception MyException;
To create a different exception type. That doesn't work so I kinda
just said, eh whatever, this typedef stuff doesn't work yet.
You are right, typedef was invented before classes and OOP, so what you say
doesn't work :-)
But I think typedef may be modified to work as you want too, that is to define
a subtype (so the runtime typeinfo of MyException too has to be different!).
I/we can ask Walter what he thinks about this.
Now I can't accidentally assign a vertex handle to a face handle.
That could be useful.
Right. But so far I don't see problems in extending the semantics of typedef to
work with OOP too. Maybe other people here can spot a problem. I presume Walter
doesn't read this newsgroup, so I can post a summary in the main D group too,
later.
Bye,
bearophile
Well, my use case just involves being able to use library function with
the proper base type. (I.e., int instead of long or byte when I do
typedef int LocalType;
LocalType t;
File f;
f.write(t);
I'll grant that I *can* use alias for such a purpose, but that doesn't
distinguish between LocalType and ArrayIndex in routines defined for
those types. E.g.:
typedef int ArrayIndex;
void zeroIndex(out ArrayIndex ai) { ai = 0; }
zeroIndex(t);
Should throw an error. If I'm using alias it doesn't (and shouldn't);