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不是很认真,这是一件奇怪的事情。我更喜欢自己为我的类型编写结构