On Tuesday, 16 August 2016 at 16:34:05 UTC, Dicebot wrote:
On 08/16/2016 07:26 PM, Patrick Schluter wrote:
What happens in that case ?

void test() {
scope rnd  = new Rnd; // reference semantic and stack allocated
Rnd rnd2;
 rnd2 = rnd;
         some_sneaky_function_that_saves_global_state(rnd);
}

or is that not even possible ? (sorry I'm still a noob in D).

If `Rnd` is supposed to be a class, it won't compile because it would mean escaping scope reference to non-scope variable (with DIP1000). If it is a struct, it won't compile because you are trying to assign `Rnd*`
(pointer) to `Rnd` (value) :)

What about this?

struct Rnd
{
    int* state;
}

void test()
{
    scope rnd = new Rnd();
    Rnd rnd2 = *rnd;

    saveGlobalState(rnd2);
}
              • Re: ... Dicebot via Digitalmars-d-announce
              • Re: ... ZombineDev via Digitalmars-d-announce
              • Re: ... Rory McGuire via Digitalmars-d-announce
              • Re: ... Dicebot via Digitalmars-d-announce
              • Re: ... Rory McGuire via Digitalmars-d-announce
              • Re: ... Dicebot via Digitalmars-d-announce
              • Re: ... Rory McGuire via Digitalmars-d-announce
              • Re: ... Walter Bright via Digitalmars-d-announce
              • Re: ... Patrick Schluter via Digitalmars-d-announce
              • Re: ... Dicebot via Digitalmars-d-announce
              • Re: ... Meta via Digitalmars-d-announce
              • Re: ... Dicebot via Digitalmars-d-announce
              • Re: ... Dicebot via Digitalmars-d-announce
              • Re: ... Rory McGuire via Digitalmars-d-announce
              • Re: ... Chris Wright via Digitalmars-d-announce
              • Re: ... H. S. Teoh via Digitalmars-d-announce
              • Re: ... Walter Bright via Digitalmars-d-announce
              • Re: ... Dicebot via Digitalmars-d-announce
              • Re: ... Chris Wright via Digitalmars-d-announce
              • Re: ... Walter Bright via Digitalmars-d-announce
  • Re: DIP1000: Scoped Pointers H. S. Teoh via Digitalmars-d-announce

Reply via email to