Dlang:具有值语义的 Const 对象不能在赋值的 rhs 中使用

Dlang: Const objects having value semantics cannot be used in rhs of assignment

下面的代码片段是一个编译错误,表示类型 const(B) 的变量 c 无法转换为 ulong

import std.typecons;

void main()
{
    Typedef!(ulong, -1, "B") b;
    const(Typedef!(ulong, -1, "B")) c = 0;
    b = c;
}

但是,使用底层普通类型 ulong 的等价版本可以正常编译。

Typedef 的想法不是应该像底层类型一样工作而不允许隐式转换吗?to/from 底层类型?为什么在这种情况下会有所不同?

Typedef 根本不是用 const 编写的。它应该提供一个接受 const 并分配给有效载荷的函数,但没有。

所以是作者疏忽造成的错误。老实说,我不太认真对待 Phobos 的 Typedef,这是一件很奇怪的事情。我更喜欢自己为我的类型编写结构。