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

Types Dlang:具有值语义的常量对象不能在赋值的rhs中使用,types,d,Types,D,以下代码段是一个编译错误,说明类型为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的思想不是应该与底层类型完全相同,而不允许与底层类型进行隐式转换吗?为什么在这种情况下会有区别呢?

以下代码段是一个编译错误,说明类型为
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
的思想不是应该与底层类型完全相同,而不允许与底层类型进行隐式转换吗?为什么在这种情况下会有区别呢?

Typedef
在编写时根本没有考虑const。它应该提供一个函数,该函数接受常量并分配给有效负载,但不会

所以这是一个由作者疏忽引起的错误。tbh,我对火卫一的Typedef不是很认真,这是一件奇怪的事情。我更喜欢自己为我的类型编写结构