what is full closures

Sean Kelly sean at f4.ca
Thu Jan 3 08:16:15 PST 2008


bobef wrote:
> Sounds like something useful but what is full closure and what is the difference from the current (D1 - empty? :) ) closures?

A full closure is where all data relevant to a delegate is retained 
until the delegate is destroyed.  ie.

void delegate() fn( int i )
{
     return delegate void() { writefln( "i is ", i ); };
}

fn( 1 )();

In D 1.0, this code would crash because the stack location for i no 
longer exists when the delegate is called.  In D 2.0, memory for i is 
allocated on the heap and this code works.


Sean


More information about the Digitalmars-d-learn mailing list