d更好C的运行时更好错误消息

原文

extern (C) int main ()
{
    auto s = "a".idup;
    return 0;
}

错误消息,不能很好定位错误.

可惜,问题在勾挂内部使用typeid.dup'只是个普通模板,所以编译器不会特殊处理.根源是dup内部使用typeid来传递Typeinfo给(目前还未模板化)新数组勾挂.一旦模板化新数组且不再需要Typeinfo,该问题就会消失.

所以,真正方法是模板化_d_new_array勾挂.

最近已有了很大进步,且已模板化很多勾挂.我很期望2023最终将实现它.
此外,typeid问题只是表面原因,根本问题是调用了接收Typeinfo对象的函数(并用typeid来取底层的Typeinfo),只能通过模板化(编译器勾挂)该函数来解决该问题.

posted @ 2023-01-20 20:31  zjh6  阅读(18)  评论(0)    收藏  举报  来源