www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 5575] New: Problem with a map() of a const uniq()

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5575

           Summary: Problem with a map() of a const uniq()
           Product: D
           Version: D2
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: bearophile_hugs eml.cc



D2 code. map() doesn't modify the input range, so I think this is correct (but
I am not sure if it's correct. A mutable range of immutable items isn't the
same thing as an immutable range):


import std.algorithm;
void main() {
    auto u1 = uniq([1]);
    auto m1 = map!q{ a }(u1); // OK
    const u2 = u1;
    auto m2 = map!q{ a }(u2); // Error
}


DMD 2.051 gives:

...\dmd\src\phobos\std\algorithm.d(109): Error: constructor
std.algorithm.Map!(result,const(Uniq!(pred,int[]))).Map.this (Uniq!(pred,int[])
input) is not callable using argument types (const(Uniq!(pred,int[])))
...\dmd\src\phobos\std\algorithm.d(109): Error: cannot implicitly convert
expression (r) of type const(Uniq!(pred,int[])) to Uniq!(pred,int[])
test4.d(6): Error: template instance std.algorithm.map!(" a
").map!(const(Uniq!(pred,int[]))) error instantiating

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 14 2011
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5575




This seems related, DMD 2.058head:


import std.algorithm, std.array;
void main() {
    auto s1 = "hello";
    auto m1 = map!(c => c)(s1);
    auto a1 = array(m1); // OK
    auto s2 = "hello"d;
    auto m2 = map!(c => c)(s2);
    auto a2 = array(m2); // line 8, Error
}


...\dmd2\src\phobos\std\array.d(55): Error: result[i] isn't mutable
test.d(8): Error: template instance std.array.array!(Result) error
instantiating

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 03 2012