On 7/30/12 12:25 PM, kenji hara wrote:
Unfortunately no. 'static nested struct' never have any frame pointers, so
auto map(alias pred, Range)(Range r) {
static struct Result {
.. auto front() { return pred(...); }
}
}
if pred is a nested function and requires its frame pointer to call
it, Result cannot access it.
Got it. So is it correct to say that global structs templated with alias
sometimes save their frame pointers, sometimes not? If so, could you
please give a few more details on how that choice is made?
Longer term, it has become obvious to me that we need a clear and simple
mechanism for a function to save another function passed by alias, even if
that function holds state. That must happen regardless of interaction with
Voldemort types. We must have a mean do e.g. define a scope delegate that
holds the alias function and is able to call it. This has been a
long-standing problem that we've avoided in limited cases by relying on the
built-in frame pointer.
The fundamental problem is the same as this.
Issue 5710 - cannot use delegates as parameters to non-global template
http://d.puremagic.com/issues/show_bug.cgi?id=5710
It would be quite a bummer if we can't address this limitation somehow.
Andrei
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta