d用户删除属性

原文
是否有文档描述移除@属性(@property)不会导致错误,但会导致代码行为的改变?
正在考虑全面删除3000多个@属性.由此产生的编译错误我可修复(除非在推测实例化中,否则可能更难追踪),但我特别担心的是不会导致编译警告/错误行为变化.
多谢了
因为@属性只是有时改变了typeof的结果,行为变化可能如下:

static if (typeof(foo.bar) == T) {
    // foo有"T bar"属性
} else {
    // 没有
}

目前,如果foo有一个@属性 T bar();,则此代码选择第一个分支.如果移除@属性,则进入第二个.

没有文档.
有无@属性唯一区别是,如果取属性地址,如果无@属性,则取函数地址,如果有@属性,则取返回值的地址.
这会影响如下推导:

auto x = &s.foo;

会导致类型不匹配,但不能保证.

最好是一次删除一些@property,将它们签入git,然后运行测试包检查是否有错误,使'git bisect'在追踪测试包遗漏的错误的原因时,很有用.

posted @ 2023-01-29 08:46  zjh6  阅读(23)  评论(0)    收藏  举报  来源