d不应限制&.

-preview=dip1000开关

@safe:
void main() 
{
    int x;
    int* a = &identity(x); // error
    int* b = identity(x).addressOf; // workaround
}

ref int identity(return ref int x) {return x;}
int* addressOf(return ref int x) {return &x;}

addressOf替换&来工作.
右值引用参数是调用函数前创建局部变量并传递其给函数参数的语法糖,所以应可正常工作.

posted @ 2021-11-29 22:01  zjh6  阅读(12)  评论(0)    收藏  举报  来源