@@ -597,11 +597,54 @@ iota
597597 return IotaIterator! I(I.init).sliced(lengths);
598598}
599599
600+ // /ditto
601+ Slice! (Contiguous, [N], IotaIterator! sizediff_t )
602+ iota
603+ (size_t N)(size_t [N] lengths, sizediff_t start)
604+ {
605+ import mir.ndslice.slice : sliced;
606+ return IotaIterator! sizediff_t (start).sliced(lengths);
607+ }
608+
609+ // /ditto
610+ Slice! (Contiguous, [N], StrideIterator! (IotaIterator! sizediff_t ))
611+ iota
612+ (size_t N)(size_t [N] lengths, sizediff_t start, size_t stride)
613+ {
614+ import mir.ndslice.slice : sliced;
615+ return StrideIterator! (IotaIterator! sizediff_t )(stride, IotaIterator! sizediff_t (start)).sliced(lengths);
616+ }
617+
618+ // /ditto
619+ template iota (I)
620+ if (isIntegral! I)
621+ {
622+ // /
623+ Slice! (Contiguous, [N], IotaIterator! I)
624+ iota
625+ (size_t N)(size_t [N] lengths, I start)
626+ if (isIntegral! I)
627+ {
628+ import mir.ndslice.slice : sliced;
629+ return IotaIterator! I(start).sliced(lengths);
630+ }
631+
632+ // /ditto
633+ Slice! (Contiguous, [N], StrideIterator! (IotaIterator! I))
634+ iota
635+ (size_t N)(size_t [N] lengths, I start, size_t stride)
636+ if (isIntegral! I)
637+ {
638+ import mir.ndslice.slice : sliced;
639+ return StrideIterator! (IotaIterator! I)(stride, IotaIterator! I(start)).sliced(lengths);
640+ }
641+ }
642+
600643// /ditto
601644Slice! (Contiguous, [N], IotaIterator! I)
602645iota
603646 (I, size_t N)(size_t [N] lengths, I start)
604- if (isIntegral ! I || isPointer! I)
647+ if (isPointer! I)
605648{
606649 import mir.ndslice.slice : sliced;
607650 return IotaIterator! I(start).sliced(lengths);
611654Slice! (Contiguous, [N], StrideIterator! (IotaIterator! I))
612655iota
613656 (I, size_t N)(size_t [N] lengths, I start, size_t stride)
614- if (isIntegral ! I || isPointer! I)
657+ if (isPointer! I)
615658{
616659 import mir.ndslice.slice : sliced;
617660 return StrideIterator! (IotaIterator! I)(stride, IotaIterator! I(start)).sliced(lengths);
0 commit comments