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,这是一件很奇怪的事情。我更喜欢自己为我的类型编写结构。
下面的代码片段是一个编译错误,表示类型 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,这是一件很奇怪的事情。我更喜欢自己为我的类型编写结构。