July 06, 2014 [Issue 13054] New: pure nothrow @safe std.algorithm.schwartzSort | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=13054 Issue ID: 13054 Summary: pure nothrow @safe std.algorithm.schwartzSort Product: D Version: D2 Hardware: x86 OS: Windows Status: NEW Severity: enhancement Priority: P1 Component: Phobos Assignee: nobody@puremagic.com Reporter: bearophile_hugs@eml.cc In dmd 2.066beta1 this compiles and works correctly: void main() pure nothrow @safe @nogc { import std.algorithm: sort; import std.math: abs; int[3] data = [-2, 1, 3]; auto r = data[].sort!q{a.abs < b.abs}; } But schwartzSort doesn't support each of those tags: void main() pure nothrow @safe @nogc { import std.algorithm: schwartzSort; import std.math: abs; int[3] data = [-2, 1, 3]; auto r = data[].schwartzSort!abs; } temp.d(5,20): Error: pure function 'D main' cannot call impure function 'std.algorithm.schwartzSort!(abs, "a < b", cast(SwapStrategy)0, int[]).schwartzSort' temp.d(5,20): Error: safe function 'D main' cannot call system function 'std.algorithm.schwartzSort!(abs, "a < b", cast(SwapStrategy)0, int[]).schwartzSort' temp.d(5,20): Error: @nogc function 'D main' cannot call non-@nogc function 'std.algorithm.schwartzSort!(abs, "a < b", cast(SwapStrategy)0, int[]).schwartzSort' temp.d(5,20): Error: 'std.algorithm.schwartzSort!(abs, "a < b", cast(SwapStrategy)0, int[]).schwartzSort' is not nothrow temp.d(1,6): Error: function 'D main' is nothrow yet may throw A schwartzSort has to allocate the mapped items, so perhaps it can't be @nogc (unless you allocate them on the C heap), but I think it can support the other tags. -- |
Copyright © 1999-2021 by the D Language Foundation