<br><div class="gmail_quote">On Sun, Apr 11, 2010 at 17:01, Robert Clipsham <span dir="ltr">&lt;<a href="mailto:robert@octarineparrot.com">robert@octarineparrot.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div>When using your method, you have to use:<br></div>
----<br>
each!(array, typeof(array))((int item) {writefln(&quot;%d&quot;, item+b)});<br>
----<br>
(I believe this is a bug, dmd should be able to deduce the type here). </blockquote><div><br>OK.  I suppose I&#39;d do:<br><br>void each(alias array)(void delegate(ElementType!(typeof(array)) item) 
dg) if (isArray!(typeof(array))) {<br>
 foreach(T i; array)<br>
   dg(i);<br>
}<br><br>and then:<br><br>each!([0,1,2,3])( <br>    (int i) { writeln(i);}<br>);<br>
<br><br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">As for the syntax, you can do this with any function in D:<br>
----<br>
void foo(int a) { writefln( &quot;%d&quot;, a ); }<br>
/// Prints 1<br>
foo = 1;<br>
----<br>
I didn&#39;t realize this worked for free functions, apparently it does. I think in newer versions of D2 functions like this will have to be marked with @property, I don&#39;t think dmd currently enforces this though.<br>

</blockquote></div><br>Urgh. OK, I didn&#39;t think of properties, thanks a lot Robert ! <br>I think it explains some strange errors I have somewhere else, when trying to assign some value and getting strange unvalid args errors. DMD transforms my foo = something into foo(something).<br>
<br><br>