Const ref and rvalues again...

Jonathan M Davis jmdavisProg at gmx.com
Sun Nov 11 02:08:43 PST 2012


On Sunday, November 11, 2012 13:36:05 Dmitry Olshansky wrote:
> Nope. It's just that the stack is intact and contains: hello and goodbye
> one after another. Without optimizations { } scope doesn't mean reuse
> stack space.
> 
> Now if play with stack a bit, for me the next one prints:
> ­-²↑
> 
> import std.stdio;
> 
> void delegate() global;
> 
> void foo(scope void delegate() del)
> {
>      global = del;
> }
> 
> 
> void f()
> {
>      {
>          char[5] bar = "hello";
>          foo((){writeln(bar);});
>      }
> }
> 
> void main()
> {
>      char[7] baz = "goodbye";
>      f();
> 
>      global();
> }

It still prints "hello", even with full optimations turned on. So, it must be 
allocating a closure in spite of scope. So, it looks to me like scope is just 
completely ignored and does absolutely nothing at this point, unless I'm just 
completely missing something here.

- Jonathan M Davis


More information about the Digitalmars-d mailing list