On Sunday, 20 December 2020 at 14:07:56 UTC, Rekel wrote:

The template parameter serves to make Flag!"foo" a distinct type from Flag!"bar".
Does this mean other flag yes's will not be accepted?

Yes.


https://dlang.org/spec/operatoroverloading.html#dispatch
Also regarding the other examples given, why does Phobos use templating so heavily, in situation in which I am totally confused as to why generics would be necessary. I seem to be totally confused as to how this template system works. It was introduced as a kind of generic, like in Java, but things like 'string s' seem to me like parameters.

Java's generics are good for what they do, bolted onto an existing language in a non-breaking way as they were, but they are a pale shadow of a real metaprogramming system. D's template metaprogramming is not anything like Java generics. It's more akin to C++ templates---much more powerful than what Java offers you.

If Java's generics are all you know, then breaking through your confusion and answering your questions is going to require more than a forum post. You'll want to read up and get some hands on.

I have an introductory post on the D blog which is the first in a series (that I'll have finally have time to continue in the new year). It goes over the very, very basics:

https://dlang.org/blog/2020/07/31/the-abcs-of-templates-in-d/

After you read that introduction, you should look into Ali's coverage of templates in 'Programming in D':

http://ddili.org/ders/d.en/

When you're ready for more, Phillippe Sigaud's tutorial is excellent (though several old, it's still mostly relevant):

https://github.com/PhilippeSigaud/D-templates-tutorial




Reply via email to