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.