spir <denis.s...@gmail.com> wrote:

1. Is the fact that we have so many ways to define the same thing a Good Thing, according to you?

Yes.


2. What is the reason for Phobos defining param funcs as template params? Efficiency? Why?

Efficiency is one reason, as DMD is unable to inline functions passed as
parameters. It is also a kind of currying, allowing one to define the
function as foo!bar, and for instance store it in an alias.


3. What is the meaning of 'alias f'? How does it work? This is a totally enigmatic feature for me. Seems it allows placing anything of any type as template param. Far more versatile than common use of templates as 'simple' generics. Note that if I remove the seemingly useless 'alias' from version 1 , I get: Error: template instance hof1!(int,f) does not match template declaration hof1(P,f)
???
(could not find any explanation on alias params anywhere -- pointers also welcome)

D templates take three kinds of parameters - types, aliases, and values.
While the other two are easy to understand, aliases are somewhat more
complex. In short, an alias can reference anything that has a name. The
details may be more complex, but that's the gist of it.

--
Simen

Reply via email to