Delegate context pointers
Etienne Cimon
etcimon at gmail.com
Sun Jan 26 20:34:30 PST 2014
On 2014-01-26 22:20, Jakob Ovrum wrote:
>
>
> C++ closures work similarly to D non-static nested structs: they carry
> copies or references to upvalues as hidden members of their type. In
> C++, this type is unnamed - there is no syntax for it, it can only be
> referred to with type inference (such as by wrapping it with
> std::function). In D, nested structs are named but the scope of the name
> is limited - once the struct instance leaves the function, it is no
> longer identifiable by name, which is the reason for their moniker
> "voldemort type".
That must be why the only way to refer to those nested struct types is
by returning auto and using typeof on the variable that absorbs the value.
I was mostly wondering if the return values of static structs used
inside the closure would be captured within that closure. I see it's
only about local variables or other outer instances, so if I add a
closure to a dynamic delegate array it should allow me to pick up a new
pointer returned by the static struct.
I love your work on LuaD btw, I'm using it as the first step of runtime
as a configuration file in a vibe.d cms/framework, and also as a vibe.d
runtime page (I intend to pass over most of my convenience functions to
luastate). It allows me to have configuration namespaces with comments,
which is the most precious dependency of a library-based CMS. You can
see an example of how I'm using it here:
https://github.com/GlobecSys/w3Vibe/blob/master/examples/luadebugger/config.lua
Thanks!
More information about the Digitalmars-d
mailing list