On 11/20/13 9:56 AM, Meta wrote:
On Wednesday, 20 November 2013 at 14:14:28 UTC, Timon Gehr wrote:
On 11/20/2013 02:52 PM, Jacob Carlborg wrote:
On 2013-11-20 13:56, Timon Gehr wrote:

We do in any case:

import std.algorithm, std.range;

void main(){
    auto a = [1,2,3,4,5];
    auto s = sort(a);
    swap(a[0],a[$-1]);
    assert(is(typeof(s)==SortedRange!(int[])) && !s.isSorted());
}


I don't understand what this is supposed to show. That the type is
"SortedRange" but it's actually not sorted?


Yes, hence SortedRange being sorted is just a convention in any case.

Couldn't we have an overload of each of the mutating functions in
std.algorithm that takes a SortedRange and does static assert(0, "Cannot
modify a sorted range")? I suppose there are cases where we *want* to
mutate a sorted range... Unwrap the inner type, maybe?

That wouldn't help much - people have access to the underlying range anyway.

Andrei

Reply via email to