public static void idx_aloop2 <T, T2>(idx <T> src0, idx <T2> src1, Action <eptr <T>, eptr <T2> > act) where T : struct where T2 : struct { var itr0 = new idxiter <T>(); var itr1 = new idxiter <T2>(); for (itr0.init(src0), itr1.init(src1); itr0.notdone(); itr0.next(), itr1.next()) { act.Invoke(itr0.data, itr1.data); } }