FreePascal布尔范围子类型Default值超声明范围问题问询
FreePascal中布尔范围子类型的Default行为分析
这明显是Bug,不是特性,理由如下:
- 自定义范围子类型
TTrue的声明范围是true..true,合法值只能是true,但Default(TTrue)返回的false完全超出了类型定义范围,违背了子类型的语义一致性。 - 对比
TFalse的Default行为符合预期(返回范围内的false),说明编译器对这类单值范围子类型的处理存在不一致性,并非设计意图。
建议向FreePascal开发者反馈:这种行为会破坏泛型元编程、运行时契约检查等场景的正确性——比如你的契约库如果依赖Default获取类型的合法默认值,会直接导致逻辑错误。反馈时附上你提供的最小可复现代码,能帮助开发者快速定位问题。
内容的提问来源于stack exchange,提问作者Rrr Rrr
相关产品推荐
相关产品推荐

