原文 用-preview=dip1000
标志,应可编译
,但未编译.
@safe int[] fun()
{ import std : 数组, map;
域 r = [1,2,3].map!"a+3";
return r.数组;
}
如果直接返回r
,数据引用会逃逸
,但数组
会复制数据.无论有域
与否,应允许返回数组区间
.
这里问题是为了能够传递
给数组
,r
是域
,数组
还需要接收域参数
.但是,因为是复制
到分配内存
中,数组
的参数不能是域
.
除非区间有非域
区间原语,数组
参数应该推导域
.它不是逃逸
输入数组,而是解引用
,并复制元素到新的非域GC
数组中.
推导域
失败,会退回到从纯
推导中的中域
.