scope ref const(T) --> error?!

Tove tove at fransson.se
Thu May 3 15:43:14 PDT 2012


On Thursday, 3 May 2012 at 22:25:45 UTC, Ali Çehreli wrote:
> On 05/03/2012 03:21 PM, Tove wrote:
> > On Thursday, 3 May 2012 at 18:28:19 UTC, Mehrdad wrote:
> >> What's wrong with passing a struct as scope ref const?
> >>
> >> I want to avoid copying the struct, and its information is
> only read
> >> inside the function...
> >
> > ref scope? hm? What additional semantics do you desire from
> that
> > construct, which 'const ref' doesn't provide?
>
> scope is a not-yet-implemented promise of the function. It 
> says: "trust me, I will not use this reference outside of the 
> function."
>
> > A a;
> >
> > void fun(const scope ref A x)
> > {
> > // x goes out of scope, destroy it... oops it's a global
> variable!?
>
> scope does not destroy. scope makes this illegal (assuming that 
> A is a class type):
>
>     a = x;
>
> There is deprecated use of the 'scope' keyword but this is not 
> it.
>
> > }
> >
> > fun(a);
> >
>
> Ali

right, thanks. I forgot about that, since it was never 
implemented I didn't use it.

But nevertheless... the actual implemented semantics is the same 
for parameters as for the deprecated function body case, at the 
end of the function the parameter goes out of scope too! i.e. 
destructor should be called.



More information about the Digitalmars-d mailing list