On 7/14/17 3:50 PM, Anton Fediushin wrote:
On Friday, 14 July 2017 at 17:23:41 UTC, Steven Schveighoffer wrote:
Don't do this, because it's not what you think. It's not actually
calling std.algorithm.sort, but the builtin array sort property. This
will be going away soon.
This sucks. I know, that `.sort` will be removed, but I thought it won't
break any code.
With 2.075, it won't compile even without the parentheses, because a
char[] is not an array according to std.algorithm...
But why? This should be true for `char[]`, isn't it?
-----
if ((ss == SwapStrategy.unstable && (hasSwappableElements!Range ||
hasAssignableElements!Range) || ss != SwapStrategy.unstable &&
hasAssignableElements!Range) && isRandomAccessRange!Range &&
hasSlicing!Range && hasLength!Range)
-----
(It's from https://dlang.org/phobos/std_algorithm_sorting.html#sort)
static assert(!isRandomAccessRange!(char[]));
static assert(!hasSlicing!(char[]));
static assert(!hasAssignableElements!(char[]));
static assert(!hasSwappableElements!(char[]));
static assert(!hasLength!(char[]));
It's because of autodecoding :) Phobos does not view char[] as an array,
but rather a range of decoded dchar elements. It causes no end of problems.
-Steve