bearophile wrote:
Christopher Wright Wrote:
I don't know what this is doing. That code fragment won't compile, and
it isn't showing usage.
Sorry:
struct _add { T opCall(T.init + T.init)(T x) { return x+x; } }
_add add;
Now you can give it to a function, without the need of specializing it for a
type T first (you can't give the pointer to a template). (This may also be
faster, because there isn't a delegate to call).
(Haskell is statically typed and allows you do more complex things with a clean
enough syntax).
I thought you could do this with an alias parameter, but perhaps I'm
wrong. It's not the sort of thing I try to do, usually.
Virtual templates would allow you to use polymorphism in this case, but
that's not going to be considered for quite some time, if at all.
Can you explain?
Like generics in C#. Java's just hiding casts with its generics, but C#
does specialized code generation at runtime for each generic type it
creates. D could do this with full templates, not just generics, and at
compile time, but it'd require an extra compilation step before linking,
most likely.
Bye,
bearophile