Apple Blocks added to C++?

Mattias Holm mattias.holm at openorbit.REMOVE.THIS.org
Thu Sep 3 13:31:07 PDT 2009


Walter Bright wrote:

> Nested functions do closures in a straightforward way, so by leaving off 
> nested functions they were forced to make an ugly syntax <g>. This is 
> why I shake my head in just not understanding the process that led to 
> their design.

Well, one problem would be that nested functions are already a feature 
in GCC, and they are not compatible (code would be broken by an 
introduction, at least the ABI, an ABI breaking modification of nested 
GCC function could have been controversial at least).

>> Nested functions can usually not be called after the defining function 
>> have returned. You cannot return blocks directly (since they are 
>> located on the stack), but you can return a heap copy of the block.
> 
> This is handled in D automatically.

Have not looked at D's implementation of this, looks nice I think. In C 
this would mean stealing some extra keywords, adding _Delegate or 
whatever and then a file stddelegate.h that #define delegate _Delegate. 
Also, without forcing GC on the user, returning a delegate would be 
tricky to say the least (if efficiency is needed).

So given the situation, they probably did a decent choice, a bit like 
patching an x86 CPU like AMD did for the AMD64.


/ Mattias



More information about the Digitalmars-d mailing list