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