/+ Michal 'GiM' Spadlinski +/
import tango.io.Stdout;
void blink(T, U)(T t, bool delegate(ref U) cond, void delegate(ref U) act)
{
foreach (ref a; t)
if (cond(a))
act(a);
}
void main()
{
int[] x = [1,2,3,4,5,6,7,8,9];
blink(x,
(ref int b){ return b%2 == 0; },
(ref int b){ Stdout(b).newline; b+=8; } );
Stdout ("----------").newline;
foreach (a; x)
Stdout (a).newline;
}