d错误传播数组域

原文
-preview=dip1000标志,应可编译,但未编译.

@safe int[] fun()
{ import std : 数组, map;
  域 r = [1,2,3].map!"a+3";
  return r.数组;
}

如果直接返回r,数据引用会逃逸,但数组会复制数据.无论有与否,应允许返回数组区间.
这里问题是为了能够传递数组,r,数组还需要接收域参数.但是,因为是复制到分配内存中,数组的参数不能是.

除非区间有非域区间原语,数组参数应该推导.它不是逃逸输入数组,而是解引用,并复制元素到新的非域GC数组中.
推导失败,会退回到从推导中的中域.

posted @ 2022-08-25 09:23  zjh6  阅读(17)  评论(0)    收藏  举报  来源