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

Reply via email to