相关疑难解决方法(0)

D语言是否有多个标准库和GC问题?

我想知道D是多么成熟和稳定,如果它可能是C/C++的一个很好的替代品.

我知道目前有两个标准库(Phobos和Tango).是否仍然没有统一的标准库?

另外我前段时间听说语言在GCed /非GCed代码的边界上存在问题.我在D网站上找不到任何关于它的参考,这个问题仍然是正确的吗?

d tango phobos

45
推荐指数
4
解决办法
4100
查看次数

关于postblit和移动语义的问题

我刚才已经问了一个类似的问题,但我仍然不清楚一些细节.

  1. 在什么情况下postblit构造函数调用?

  2. 移动对象的语义是什么?它会被后照亮和/或破坏吗?

  3. 如果按值返回局部变量会发生什么?它会被隐含地移动吗?

  4. 如何将表达式转换为右值?例如,通用交换如何?

templates d return-value copy-constructor move-semantics

14
推荐指数
1
解决办法
896
查看次数

我怎么知道何时使用`const ref`或`in`?

void foo(T, size_t size)(in T[size] data){...}
//vs
void foo(T, size_t size)(const ref T[size] data){...}
Run Code Online (Sandbox Code Playgroud)

根据/sf/answers/18994111/,pass by value在某些情况下,C++似乎更快.

但是D有一个特殊的关键字in,我想知道什么时候应该使用它.是否in总是导致一个副本还是一个编译器优化?

我可以遵循哪些指导方针帮助我决定const refin

d

6
推荐指数
1
解决办法
107
查看次数

D 有移动构造函数吗?

我正在引用这个 SO 答案Does D have something like to C++0x's move semantics?

接下来,您可以通过定义 this(Struct that) 来覆盖 C++ 的构造函数(constructor &&that)。同样,您可以使用 opAssign(Struct that) 覆盖分配。在这两种情况下,您都需要确保销毁它的值。

他举了一个这样的例子:

// Move operations
this(UniquePtr!T that) {
    this.ptr = that.ptr;
    that.ptr = null;
}
Run Code Online (Sandbox Code Playgroud)

变量会that 一直移动吗?或者that在某些情况下变量可能会被复制?

如果我只将临时副本上的 ptr 置空,那将是不幸的。

d

2
推荐指数
1
解决办法
436
查看次数