Java-like generics in D
BCS
ao at pathlink.com
Sun Aug 12 14:16:28 PDT 2007
Reply to Frank,
> But if you make something like a simple container, they are not so
> nice.
> A generic would be more appropriate in this case. In this case i wish
> i
> had that java hack available. Thats why i though generics as an
> addition
> to templates could be a good thing.
>
I think I have wanted something along this line:
I would like to be able to have template that end up as identical be just
aliases to each other.
for instance, with the template:
|template Type(T)
|{
| T Read(Stream s)
| {
| T ret;
| s.ReadExact(&ret, T.sizeof);
| return ret;
| }
|}
Type!(dchar).Read and Type!(int).Read are exactly the same code (read and
return 32bits)
the same can be said for templates that work on classes; when two types are
used that derive from the same base and the base has all of the methods that
the template uses, then the codes is exactly the same.
It would be nice to have some way to tell a template what parts of a type
to specialize on (size, how to call a given set of methods, etc.) and then
only when these are different will new code be generated)
This would work vary well with something like a generic container for objects;
while instances of the container take and return a given type (as the programer
sees it), in fact the code is the same for all cases and it only deals with
general objects.
More information about the Digitalmars-d
mailing list