Following code does not compile,
import std.algorithm;
void main()
{
auto r1 = sort!("a<b", SwapStrategy.unstable)([1,3,2,4]);
assert(equal(r1, [1,2,3,4]));
auto r2 = sort!("a<b", SwapStrategy.semistable)([1,3,2,4]); // Line 7
assert(equal(r2, [1,2,3,4]));
auto r3 = sort!("a<b", SwapStrategy.stable)([1,3,2,4]);
assert(equal(r3, [1,2,3,4]));
}
Output:
C:\dmd2\src\phobos\std\algorithm.d(7001): Error: static assert (cast(SwapStrategy)1 != cast(SwapStrategy)1) is false
C:\dmd2\src\phobos\std\algorithm.d(6710): instantiated from here: sortImpl!(result,ss,int[])
test.d(7): instantiated from here: sort!("a<b",cast(SwapStrategy)1,int[])
Semi-stable sort is stable sort.
So if stable sort is supported, we can implement it with stable sort, at least.
Comment #1 by lt.infiltrator — 2014-03-19T22:25:40Z
The provided code compiles and runs without problems as of v2.065.