@safe:

struct S {
int* ptr;

auto borrowA() return {
return ptr;
}//模板

int* borrowB() return /*域推导*/ {
return ptr;
}
}

void main() {
static int* global;
S s;
global = s.borrowA;
global = s.borrowB;
}

问题是,当是​​模板​​​时,推导出了​​域​​.

inout(D) borrowA()() return inout pure @safe nothrow @nogc {
return _target;
}
inout(D) borrowB() return inout pure @safe nothrow @nogc {//
return _target;
}

可加,

inout D temp = this._target;

来禁止推导.

thomas.bockman:

我不明白.​​return​​限制​​调用者​​使用返回值方式,​​scope​​限制​​被调​​使用​​this​​引用方式.

为什么​​A​​推导可删​​B​​地显式​​限制​​?

Dennis:

实现有问题,将用​​STC.returnScope​​替代.

​依赖该问题​

可用:

assert(!__traits(compiles, () @safe {...}));

测试是否允许​​转义​​引用.