Bug 6217 – [GSOC] result of std.algorithm.map is not movable

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2011-06-26T14:26:00Z
Last change time
2012-03-30T08:35:27Z
Assigned to
nobody
Creator
dmitry.olsh

Comments

Comment #0 by dmitry.olsh — 2011-06-26T14:26:58Z
import std.algorithm; void main() { auto m = map!"a"([1,2,3]); auto x = move(m); } bails out with: C:\dmd2\windows\bin\..\..\src\phobos\std\algorithm.d(1400): Error: function std. algorithm.map!("a").map!(int[]).map is a nested function and cannot be accessed from move It also hits the following code: import std.range, std.algorithm; void main() { int[] arr = [ 1, 2, 3, 4]; auto s = assumeSorted(map!"a"(arr)); assert(equal(s.lowerBound(3),[1, 2])); } The problem is that move is called inside release() in SortedRange template. In my project I use sorted array of intervals [a,b] for codepoint sets, so for now I just ripped off that release() function in SortedRange. Still some cleaner soultion for this general problem of map is needed.
Comment #1 by dmitry.olsh — 2012-03-30T08:35:27Z