D 具有不可复制类型的数组

D 具有不可复制类型的数组,d,D,我如何用D表示std::vector p 数组!(唯一!Foo)p 问题是数组似乎需要此(此),该功能已在唯一中禁用。我不知道为什么数组首先需要postblit构造函数。据我所知,std.container中目前没有任何内容支持不可复制的类型。D default会初始化所有内容,除非您付出额外的努力告诉它不要这样做,这一事实通常会使支持无法分配或复制的类型变得更加困难。这绝对是你必须计划的事情,否则就行不通了。另外,在最初设计std.container时,没有考虑不可复制的类型。事实上,我非常

我如何用D表示
std::vector p

数组!(唯一!Foo)p

问题是
数组
似乎需要
此(此)
,该功能已在
唯一
中禁用。我不知道为什么数组首先需要postblit构造函数。

据我所知,std.container中目前没有任何内容支持不可复制的类型。D default会初始化所有内容,除非您付出额外的努力告诉它不要这样做,这一事实通常会使支持无法分配或复制的类型变得更加困难。这绝对是你必须计划的事情,否则就行不通了。另外,在最初设计std.container时,没有考虑不可复制的类型。事实上,我非常确定,当时不可能禁用类型的默认初始化,也不可能禁用postblit构造函数。但我不记得什么时候引入了
@disable
,也不记得它最初的工作原理

所以,你所说的是做一些原本没有计划的事情,并且它可能或者可能不可能与当前的设计一起工作。无论如何,如果它不工作,那么应该为它打开一个bug报告:

在标准库中添加分配器时,std.container将得到一些调整,在2.070中,我们现在有了std.experimental.allocator,Andrei Alexandrescu目前正在对我们的容器解决方案进行重大的重新设计,这样我们将得到一个新的包/模块来处理容器(可能是std.collection,因为std.container显然已经被采用)。所以,无论std.container是否解决了这个问题,都应该使用新的容器类型来解决这个问题