Thanks for all the help! This makes it make a lot more sense now,
I'm surprised it's not part of the dlang tour.
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?
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.
For example;
```
class C
{
void opDispatch(string s)(int i)
{
writefln("C.opDispatch('%s', %s)", s, i);
}
}
```
I'm pretty sure I'm confusing something, though I don't see the
point of using this instead of something like 'opDispatch(string
s, int i)`?
I also came across a similar thing in the File.byLine
documentation.
(https://dlang.org/library-prerelease/std/stdio/file.by_line.html)