Skip to content

Commit 25dac83

Browse files
committed
medianOf restricted for now to only size_t indexes
1 parent 1859f0d commit 25dac83

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

std/algorithm/sorting.d

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3150,7 +3150,7 @@ private void medianOf(
31503150
(Range r, Indexes i)
31513151
if (isRandomAccessRange!Range && hasLength!Range &&
31523152
Indexes.length >= 2 && Indexes.length <= 5 &&
3153-
allSatisfy!(isIntegral, Indexes))
3153+
allSatisfy!(isUnsigned, Indexes))
31543154
{
31553155
assert(r.length >= Indexes.length);
31563156
import std.functional : binaryFun;
@@ -3159,24 +3159,29 @@ if (isRandomAccessRange!Range && hasLength!Range &&
31593159
import std.algorithm.mutation : swapAt;
31603160

31613161
alias a = i[0];
3162+
static assert(is(typeof(a) == size_t));
31623163
static if (k >= 2)
31633164
{
31643165
alias b = i[1];
3166+
static assert(is(typeof(b) == size_t));
31653167
assert(a != b);
31663168
}
31673169
static if (k >= 3)
31683170
{
31693171
alias c = i[2];
3172+
static assert(is(typeof(c) == size_t));
31703173
assert(a != c && b != c);
31713174
}
31723175
static if (k >= 4)
31733176
{
31743177
alias d = i[3];
3178+
static assert(is(typeof(d) == size_t));
31753179
assert(a != d && b != d && c != d);
31763180
}
31773181
static if (k >= 5)
31783182
{
31793183
alias e = i[4];
3184+
static assert(is(typeof(e) == size_t));
31803185
assert(a != e && b != e && c != e && d != e);
31813186
}
31823187

@@ -3269,23 +3274,24 @@ unittest
32693274
do
32703275
{
32713276
int[5] a = data;
3272-
medianOf(a[], 0, 1);
3277+
medianOf(a[], size_t(0), size_t(1));
32733278
assert(a[0] <= a[1]);
32743279

32753280
a[] = data[];
3276-
medianOf(a[], 0, 1, 2);
3281+
medianOf(a[], size_t(0), size_t(1), size_t(2));
32773282
assert(ordered(a[0], a[1], a[2]));
32783283

32793284
a[] = data[];
3280-
medianOf(a[], 0, 1, 2, 3);
3285+
medianOf(a[], size_t(0), size_t(1), size_t(2), size_t(3));
32813286
assert(a[0] <= a[1] && a[1] <= a[2] && a[1] <= a[3]);
32823287

32833288
a[] = data[];
3284-
medianOf!("a < b", Yes.leanRight)(a[], 0, 1, 2, 3);
3289+
medianOf!("a < b", Yes.leanRight)(a[], size_t(0), size_t(1),
3290+
size_t(2), size_t(3));
32853291
assert(a[0] <= a[2] && a[1] <= a[2] && a[2] <= a[3]);
32863292

32873293
a[] = data[];
3288-
medianOf(a[], 0, 1, 2, 3, 4);
3294+
medianOf(a[], size_t(0), size_t(1), size_t(2), size_t(3), size_t(4));
32893295
assert(a[0] <= a[2] && a[1] <= a[2] && a[2] <= a[3] && a[2] <= a[4]);
32903296
}
32913297
while (nextPermutation(data[]));

0 commit comments

Comments
 (0)