我觉得主要是c++追求的目标本身就很难,束缚手脚的地方又太多。
追求零开销抽象,把尽量多的东西留到编译期,这种目标本来就会带来很大的复杂度。其他语言经常会牺牲抽象程度,或者牺牲零开销,难度或者难受程度就不一样。rust 也是这种目标诉求,所以也不简单。
缚手脚的地方,比如旧版本有一些不合理的设计但又要坚持旧版本兼容,委员会扯皮,也肯定快不起来。rust 如果是 c++ 这么老的语言也会慢很多。
也有不少问题,但往往要追溯到很早,初始设计上的问题后面很难改了。模板在c++98时代原本是单纯的想做成 java 泛型那样的简单类型参数的,但后来被发现有更多做元编程的可能时,其实是一种过度使用。比如很多模板元编程可以被后面的 constexpr 以很简单的方式实现,更复杂的代码生成也可能需要的是更强大一些的卫生宏(lisp 或 rust 那样)。
【 在 hothail 的大作中提到: 】
: 特性,内容数量是一方面。还有一方面要看加这些东西的目的是什么。
:
: 在cpp身上看不出来,这些事情要解决哪些实际的场景,感觉更多是“别人有,我也要有
: ...................
--
FROM 124.64.16.*