Friends don't let friends use inout with scope and -dip1000
Dukc
ajieskola at gmail.com
Fri Aug 17 14:40:39 UTC 2018
On Friday, 17 August 2018 at 13:39:29 UTC, Steven Schveighoffer
wrote:
> On 8/17/18 3:36 AM, Atila Neves wrote:
>> Here's a struct:
>> -----------------
>> // used to be scope int* ptr() { return ints; }
>> scope inout(int)* ptr() inout { return ints; }
>
> Does scope apply to the return value or the `this` reference?
>
This reference. putting it like:
inout(int)* ptr() inout scope { return ints; }
...does not change anything.
Another thing it should AFAIK catch but doesn't:
import std.stdio;
@safe:
struct MyStruct {
int* intP;
this(int val) { intP = new int(val); }
int* ptr() return scope { return intP; }
}
int *gInt;
void main() {
auto s = MyStruct(10);
gInt = s.ptr;
writeln(*gInt);
}
More information about the Digitalmars-d
mailing list