回看以前写的一些文章 自己看是回忆 如果是给别人看的 语言还是尽量简洁 技术分享别带情绪(
rust等于C++的最佳实践
Rust填了很多C++的坑,先不说构建和包管理的优秀,语言本身设计的也确实好,而且是针对C++进行的语法优化,这个会用C++的一看就明白,这个是后发语言的优势
劣势是出来的太晚了,生态位已经被占的差不多了,领域被C++统治,虽然很想用Rust写一些东西,可是到头来还是得跟C++
C++中的RVO, Return Value Optimization(返回值优化), 基本手段是直接将返回的对象构造在调用者栈帧上, 消除函数返回对象时不必要的复制操作,从而提升程序运行效率。
这个在C++17后, 被标准明确规定为必须执行的优化之一.
C++简直是把xkcd927体现到最极致的语言
如果你想要做一件事,那可能会有3-4种方法,最简短的方法一般是最旧的方法,不推荐使用但是出于兼容性目的保留。
单说一个错误处理,C++继承了C的出现错误即UB和错误码,并且给了std::error_code包装,然后有异常机制,C++17加入了std::optional<T>,最近还加入了std::expected<T,E>,总共5套
那标准库用的是哪套呢?答案是前4者,vector下标访问失败直接segfault,.at(idx)访问失败抛异常,filesystem同一个api同时有errcode和异常两套函数,用重载区分,最新的ranges::fold_left_first总算是用上了optional,至于expected?祝它成功(
..template做元编程
怎么会有人喜欢一个复杂到LSP有时候都没法运行时分析出的东西

就这么简单的一个set<pair>,它的iterator的rit里的first和second(pair对)居然在LSP里因为模板嵌套太深都没法及时分析出来(不是rit->first不合法,而是LSP没分析出来...)


注
LSP 指 Language Server Protocol(语言服务器协议),是编辑器/IDE 用来做代码补全、跳转、提示的通用协议。
xkcd927 讽刺的是:标准太多,最后又多了一个"统一所有标准"的新标准。
因为大家都觉得现有标准不好用、不统一,于是各自搞新的,结果越搞越多,最后又有人想"统一所有标准",反而又多了一个标准,陷入循环...