strange template syntax

Philippe Sigaud philippe.sigaud at gmail.com
Sun Apr 11 07:48:04 PDT 2010


Hello,

some time ago, chris (ruunhb) posted something on his Dspec project, where he
used a template syntax I didn't know:

----
void each(alias array, T : T[] = typeof(array))(void delegate(T item) dg) {
 foreach(T i; array)
   dg(i);
}

 int[] array = [1, 2, 3, 4];
 int b = 10;

 each!(array) = (int item) {
   writefln("%d", item + b);
 };
---

I'm intrigued by the last lines. I'd have thought 'each' to be invoked by:

each!(array)( (int item) {writefln("%d", item+b)} );

But this doesn't work. And I never encountered Chris' syntax before:

template!(someArgs) = moreArgs;

Could some be nice enough to enlighten me? How does that work?


Philippe


More information about the Digitalmars-d-learn mailing list