On Tuesday, 28 June 2022 at 21:58:48 UTC, Ola Fosheim Grøstad wrote:
Not when connect returns, but the scope that connect was called from. Still, this can be deduced, you just have to give the scopes an ordering.

The deduction can happen even if you don't use `scope` attribute. When you use `scope` attribute you're saying to compiler "You have to allocate this object on the stack, don't try to use heap allocation". If you want to let compiler to decide what is the best approach then don't use `scope`.

Well, that is a flaw, if the object is stack allocated then the fields are too.

No because:

`scope` variable === the variable is a pointer/reference that points to stack allocated data

So `scope int v;` is equal to `int v;` since `v` is not a pointer, whereas `scope int *p` is different from `int *v;` since the latter can't point to stack allocated integers. This is the difference.

Since stack allocated objects are destroyed in the reverse order allowing a recursive `scope` attribute is a bit dangerous as you can see in the following example:

```d

struct A{
  int *i;

  ~this(){
    writeln(*i);
  }
}
...
 {
  A a;
  int i = 2;
  ...
  scope int *j = &i;
  scope A *b = &a;
  (*b).i = j;
 } // i is destroyed before a
```

The compiler could easily deduce it. It is not difficult to see what the life time constraint must be.

Again if you want to let the compiler to deduce then don't use `scope`.


          • Re: DIP1000 Paul Backus via Digitalmars-d-learn
            • Re: DIP... Ola Fosheim Grøstad via Digitalmars-d-learn
              • Re:... Dukc via Digitalmars-d-learn
              • Re:... Ola Fosheim Grøstad via Digitalmars-d-learn
  • Re: DIP1000 Loara via Digitalmars-d-learn
    • Re: DIP1000 Ola Fosheim Grøstad via Digitalmars-d-learn
      • Re: DIP1000 Loara via Digitalmars-d-learn
        • Re: DIP1000 Ola Fosheim Grøstad via Digitalmars-d-learn
          • Re: DIP1000 bauss via Digitalmars-d-learn
            • Re: DIP... Ola Fosheim Grøstad via Digitalmars-d-learn
          • Re: DIP1000 Loara via Digitalmars-d-learn
            • Re: DIP... Ola Fosheim Grøstad via Digitalmars-d-learn
              • Re:... Loara via Digitalmars-d-learn
              • Re:... Ola Fosheim Grøstad via Digitalmars-d-learn

Reply via email to