std.array.array and immutable elements
    Jack Applegame via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Fri Nov  7 06:32:57 PST 2014
    
    
  
DMD64 D Compiler v2.066.1
Why second call doesn't compile?
import std.array;
import std.algorithm;
class Foo {
	bool flag;
}
void main() {
   immutable(Foo)[] foos;
   foreach(i; 0..5) foos ~= new Foo;
	
   // compiles, typeof(bar1) == immutable(Foo)[]
   auto bar1 = array(foos.filter!(i => i.flag));
	
   // fails, expected typeof(bar2) == immutable(Foo)[]
   auto bar2 = array(foos.map!(i => i));
}
Error: cannot implicitly convert expression (arg) of type 
immutable(Foo) to test.Foo
Error: template instance 
std.conv.emplaceRef!(immutable(Foo)).emplaceRef!(immutable(Foo)) 
error instantiating
instantiated from here: array!(MapResult!(__lambda2, 
immutable(Foo)[]))
    
    
More information about the Digitalmars-d-learn
mailing list