gpt4 book ai didi

d - 具有不可复制类型的数组

转载 作者:行者123 更新时间:2023-12-04 02:41:21 26 4
gpt4 key购买 nike

我将如何表达std::vector<std::unique<foo>> p在 D 中?

Array!(Unique!Foo) p

问题是 Array似乎需要 this(this)已在 Unique 中禁用.我不确定为什么 Array 首先需要一个 postblit 构造函数。

最佳答案

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

所以,你说的是做一些最初没有计划的事情,它可能会也可能不会与当前的设计一起工作。无论如何,如果它不起作用,那么应该为它打开一个错误报告:https://issues.dlang.org

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

关于d - 具有不可复制类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35142473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com