d禁止新不应禁止域

原文

@disablenew可禁止new符号,这样垃集就不会管理它,然后出现导致析构器/终结器混淆的麻烦.但它目前也禁止.

class A {
    @disable new();
}

void main() {
    scope A a = new A();
}

禁止new的目的更多与管理生命期有关.与按特定方式调用的析构器有关.scope解决了该问题.
所以建议@disable new不检查scope x=new.
参考

posted @ 2022-08-28 10:38  zjh6  阅读(13)  评论(0)    收藏  举报  来源