[D2] How to not full closure?
BCS
ao at pathlink.com
Mon Jul 14 17:03:19 PDT 2008
Reply to Frank,
> Mike schrieb:
>
>> On Mon, 14 Jul 2008 04:39:58 +0200, davidl <davidl at 126.com> wrote:
>>
>>> it's better to introduce a new keyword, closure.
>>>
>>> there
>>>
>>> on heap:
>>> closure t = {
>>> // my closure
>>> return 3;
>>> }
>>> on stack:
>>> delegate t = {
>>> retirm 3;
>>> }
>> Wouldn't it suffice to overload the new keyword?
>>
>> heap:
>>
>> delegate t = new { return 3; }
>>
>> stack:
>>
>> delegate t = { return 3; }
>>
>> That way it could work with delegate literals too:
>>
>> int b = 3;
>> foo(new { return b; });
>> -Mike
>>
> I think the problem here is, new says that it will force a heap
> allocation for its call. But the heap allocation shall not happen per
> delegate, it shall only happen once for the surrounding stack frame if
> it contains at least one heap allocated delegate.
> hm, is it understandable what i mean by this ? :)
Yes, I understand it. (FWIW)
More information about the Digitalmars-d
mailing list