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