C++ 转发引用: 完美转发的关键

在现代 C++(C++11 及以后)中,一个非常强大的特性叫做 转发引用(forward references),它让开发者可以通过一个模板函数同时处理左值和右值——而且只需写一次函数模板声明。 虽然语法看起来有点复杂,但本质上,转发引用是一种非常优雅的语法机制,让代码既简洁又高效。 什么是转发引用? 当模板参数以 T&& 的形式出现在函数参数中,并且 T 是通过类型推导得到的,这种情况下就形成了一个 转发引用。例如: template<typename T> void func(T&& arg); 乍一看,这像是右值引用,但实际上是 转发引用,因为 T 是通过类型推导得出的。这个函数既能接受左值,也能接受右值: int x = 5; func(x); // 左值 …

豪车的修理费用就是贵一些

去年买了保时捷卡宴SUV(Porsche Cayenne)后,我一直担心将来修车费用会很高。当时购车时,车厂做了一次全面保养,把车里里外外都清洁了一遍。虽然这辆车已经三年车龄,但看上去几乎和新车没区别。 在英国,三年以内的新车通常不需要做MOT年检。而且很多这类新车会通过PCP(个人合同购车)方式出租给车主。简单来说,就是车主每月支付一笔租金,租期通常为三年,期满后可以选择一次性付清尾款买下车辆,也可以继续换租一辆新车。 举个例子,如果一辆新车售价是10万英镑,车厂可能按未来三年折旧后的50%残值来计算每月租金。三年后,如果车主不想买断,车厂就会将车辆作为二手车卖出,回收那5万英镑的残值。这样一来,车厂基本不会亏钱。此外,PCP合同中还有附加条款,比如每年限行1万英里,超出的部分需要额外付费,这些内容都会写在合同里。 车龄到了三年,车辆需要首次做MOT年检,同时车辆的市场价值也会首次出现较大幅度的贬值(一般是50%,甚至更多)。修车厂老板告诉我,相比玛莎拉蒂等其他豪车,保时捷的保值率相对较高。 这一年我开这辆保时捷基本没出什么问题。今年年初做了年检,顺利通过。随后又做了一次常规保养,修车厂老板告诉我,前后刹车片已经磨损了80%–85%。我们住剑桥村里,开车比较多(上班、送娃、家庭旅游都要用车),一年大概能开1-2万英理。 几周后我将车送回去更换刹车片。修完后账单是将近900英镑。我觉得有点贵,车行老板解释说,不仅换了前后刹车片,还有一个前雷达的传感器掉进了车体内部,为了修这个传感器需要拆掉前保险杠等部件,花了6个小时人工费。 我当时质疑说为啥这次修这么贵,他说:“因为这是保时捷。”我说:“那和别的车有什么区别?”他说:“It is not the same.” 我说不都一样么,他说:“It is not the same.” (汗) 这次的明细是:前后刹车片都更换了,修了前雷达传感器,人工费6小时×75英镑,加上材料费和20%增值税,总共894英镑。我知道保时捷维修肯定比奥迪Q5贵,但没想到贵了这么多。 有的朋友觉得这个价格正常,说人工费75英镑/小时其实不算贵,听说BMW 4S店的人工费能达到160甚至180英镑。但也有朋友说我被坑了,认为这家村里的修车厂用的还不是保时捷原厂件,老板可能是“杀熟”。 后来我发邮件问了剑桥的保时捷4S店,他们的报价是: 前刹车片 £618.74 后刹车片 £577.82 * 包含人工和增值税。 这样一比较,心里就舒服多了——看来豪车的维修费用确实比一般车贵不少。据说法拉利的维修费用更高,想想也是一个道理。 …

我的自律打卡清单里, 多了一项: 读书

关注行动与坚持: – 从三分钟热度到每日10页:我重新开始读书了 – 读书打卡第2天:一点一滴的改变 – 告别买书如山、读书如风的日子 🧠 强调“读书健脑”与复利思维: – 读书是给大脑的长期投资 – 每天10页书,给大脑加点料 – 坚持,是最好的认知训练 🧘 结合生活习惯与自律: – 我的自律打卡清单里,多了一项:读书 – 从冥想到阅读,每天进步1% – 习惯改变人生,读书也能很极简 我已经记不清上一次完整读完一本书是什么时候了。每次都是三分钟热度,读一会儿就放下了。说实话,阅读从来不是我的爱好。有时候在旅途中,比如坐火车时,才会随手拿本书“象征性”地翻翻,多数时候也只是拍拍照装(逼)作在读书。 这几年我还买了不少实体书,但大多只是翻了几页就被搁置在一边,最后落满灰尘。前几天我看着家里塞满的一整书柜,突然觉得这样实在太浪费了。 刚好那天不知道在哪里看到一句话,说读书是最好的健脑方式之一。每天坚持阅读10页书籍,能显著提升专注力、理解力和思考力。 于是我给自己定下计划:每天读10页书。不局限于技术类书籍,甚至会刻意避免技术类内容,因为它们有时候反而更枯燥、读起来更容易疲惫。 目前我每天坚持打卡不少活动:比如倒立、量体重、喝牛奶、高抬腿、开合跳、深蹲、冥想三分钟、刷题等等。坚持的一个小技巧就是把这些写进Excel表格,每天自己勾选打卡,一目了然。 要相信复利的力量:一天两天看不出什么效果,但长期坚持,一定会发生变化。 …

PHP 7.4 不再受支持, 博客升级提上日程

是时候告别 PHP 7.4 了,我的博客也要升级了 用了好多年的 PHP 7.4,终于要升级到 8.x 了 “能跑就别动”的日子结束了,该升级 PHP 了 WordPress 警告来了:PHP 7.4 已过时,我得动手了 WordPress 已开始向站点管理员显示警告,指出 PHP 7.x 已不再受支持。这些提示是一个重要的提醒:继续使用过时的 PHP 版本将带来严重风险,包括安全漏洞、性能下降,以及与最新的 WordPress 功能和插件不兼容。事实上,PHP 开发团队早在 2022 年 11 …

如何使用 NVM 清理除了保留版本以外的所有 Node.Js 版本

如何删除除一个版本外的所有 NVM Node.js 版本 NVM是Node Version Manager,是NodeJS版本管理器。用NVM可以很容易的在一个服务器上同时管理多个版本的Node/NPM。NVM可以在github上安装: 使用场景 你正在使用 nvm(Node 版本管理器)来管理多个 Node.js 版本 你想清理系统,只保留一个版本:v22.16.0 步骤 1:列出所有已安装的 Node 版本 nvm ls 步骤 2:使用 Bash 脚本卸载除指定版本以外的所有版本 以下BASH脚本将删掉除了KEEP_VERSION以外的所有Node/NPM版本,所以使用前请确认需要保持的版本。 KEEP_VERSION="v22.16.0" for version in …

英国最近好热啊: 冰咖啡的简单做法

英国的夏天今年似乎延长了几周——正好是享受一杯冰咖啡的好时机。天气太热,就想喝点冰的冷的。 如何制作冰咖啡 你需要准备以下材料: 冰块 酸奶 咖啡(非速溶) 牛奶/椰奶 糖(可根据口味添加) 制作步骤: 将冰块放入杯中; 倒入咖啡; 加入酸奶; 最后倒入牛奶/椰奶; 搅拌均匀,喜欢甜味的可以加入适量糖。 在这延长的夏日里,享受一杯清凉顺滑的冰咖啡吧! 最近发现:可以用椰奶来替代牛奶,或者是混合牛奶/椰奶,与众不同哦。自从学会了这个技能,几乎每天都得给媳妇弄。 英文: Simple way to make a iced-coffee Raining – but still enjoying ice …