What's the issue(s) with scope vars?

Jonathan M Davis via Digitalmars-d digitalmars-d at puremagic.com
Thu May 22 15:43:53 PDT 2014


On Thu, 22 May 2014 19:39:58 +0000
Dicebot via Digitalmars-d <digitalmars-d at puremagic.com> wrote:

> On Thursday, 22 May 2014 at 19:36:06 UTC, Nick Sabalausky wrote:
> > On 5/22/2014 3:31 PM, Dicebot wrote:
> >> On Thursday, 22 May 2014 at 19:08:53 UTC, Nick Sabalausky 
> >> wrote:
> >>> I know there's been a lot of chatter about scope vars needing 
> >>> work,
> >>> what exactly is the deal with that? Isn't there a lib version 
> >>> of
> >>> scoped? Are there current problems with that?
> >>
> >> You speak about scope storage class (aka scope classes as in 
> >> D1). It has
> >> been deprecated and replaced by Phobos scoped.
> >>
> >> Recent chatter is about scope type qualifier which is supposed 
> >> to
> >> prohibit escaping references to variable making it only 
> >> available in
> >> current and nested scopes. There are many possible 
> >> applications for that
> >> - safe casting away for shared, safe rvalue references, 
> >> efficient
> >> reference counting and so on. It is currently present in the 
> >> language
> >> but has no actual implementation, being effectively a NO-OP.
> >
> > Is phobos scoped at least good enough for real-world use in the 
> > meantime?
> >
> > Also, is this unimplemented scope type qualifier you speak of 
> > going to basically replace phobos scoped?
> 
> First question - don't now for sure. It worked for me few times I 
> have used it but there several bug reports in bugzilla with some 
> nastiness.
> 
> Second question - that is something yet to investigate. Natural 
> relation between those is that value captured by `scoped` should 
> be qualified as `scope` to be reliably memory safe. Does that 
> also mean that you can skip `scoped` altogether and release all 
> scope variables at the end of scope automatically? Something yet 
> to investigate.

AFAIK, scope is only implemented for delegates (and I'm not even sure
that that fully works). For all other types, it does nothing (which is
part of why using in makes no sense). So, on the whole, scope is
currently ill-defined and mostly unimplemented.

- Jonathan M Davis

- Jonathan M Davis


More information about the Digitalmars-d mailing list