July 30, 2011
D2 code:


import std.stdio, std.algorithm, std.range;
auto foo(int p) {
    return map!((int n){ return p; })(iota(3));
}
void main() {
    writeln(take(foo(2), 20));
}


To me it prints:
[4221068, 4221068, 4221068]

Do you know if this is a known bug/problem?

Bye,
bearophile
July 31, 2011
The problem is the parameter p is not being heap allocated.  I'm fairly sure it's already in bugzilla, something about failing to detect escaping references with alias parameters.

"bearophile" <bearophileHUGS@lycos.com> wrote in message news:j0vhod$t87$1@digitalmars.com...
> D2 code:
>
>
> import std.stdio, std.algorithm, std.range;
> auto foo(int p) {
>    return map!((int n){ return p; })(iota(3));
> }
> void main() {
>    writeln(take(foo(2), 20));
> }
>
>
> To me it prints:
> [4221068, 4221068, 4221068]
>
> Do you know if this is a known bug/problem?
>
> Bye,
> bearophile