digitalmars.D.bugs - [Issue 13054] New: pure nothrow safe std.algorithm.schwartzSort
- via Digitalmars-d-bugs (43/43) Jul 06 2014 https://issues.dlang.org/show_bug.cgi?id=13054
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. --
Jul 06 2014