digitalmars.D.bugs - [Issue 16338] New: sort variantArray bug
- via Digitalmars-d-bugs (59/59) Jul 30 2016 https://issues.dlang.org/show_bug.cgi?id=16338
https://issues.dlang.org/show_bug.cgi?id=16338 Issue ID: 16338 Summary: sort variantArray bug Product: D Version: D2 Hardware: x86 OS: Windows Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: kapblc mail.ru import std.stdio; import std.variant; import std.algorithm; void main(){ struct Trava { long a, b, c; } Trava n1, n2, n3, n4, n5, n6; n1.a = 1; n2.a = 2; n3.a = 3; n4.a = -1; n5.a = 5; n6.a = 6; auto M = [n1, n2, n3, n4, n5, n6]; writeln("input:", M); M.sort!((a, b) => a.a < b.a); writeln("output:", M); // [n4, n1, n2, n3, n5, n6] ok auto m = variantArray(n1, n2, n3, n4, n5, n6); writeln("input:", m); m.sort!((a, b){ auto A = a.peek!Trava; auto B = b.peek!Trava; return A.a < B.a; }); writeln("output:", m); // [n4, n4, n4, n4, n5, n6] bug struct Trava2 { long a, b; } Trava2 v1, v2, v3, v4, v5, v6; v1.a = 1; v2.a = 2; v3.a = 3; v4.a = -1; v5.a = 5; v6.a = 6; auto w = variantArray(v1, v2, v3, v4, v5, v6); writeln("input:", w); w.sort!((a, b){ auto A = a.peek!Trava2; auto B = b.peek!Trava2; return A.a < B.a; }); writeln("output:", w); // [v4, v1, v2, v3, v5, v6] ok } --
Jul 30 2016