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