digitalmars.D.learn - Problem with take(map())
- bearophile (13/13) Jul 29 2011 D2 code:
 - Daniel Murphy (5/18) Jul 30 2011 The problem is the parameter p is not being heap allocated. I'm fairly ...
 
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
 Jul 29 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 
 Jul 30 2011








 
 
 
 "Daniel Murphy" <yebblies nospamgmail.com>