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