死亡搁浅配乐收藏
《死亡搁浅》是我玩过的游戏中,音乐和配乐设计最为出色的一款作品。它的音乐完全可以独立于游戏本身享受,玩家无需具备游戏体验也能轻松欣赏其中的旋律。这些歌曲展现了极强的亲和力和感染力,每一曲都令人陶醉。游戏中恰到好处的配乐增强了玩家的沉浸感,使人愈加沉迷于其中。音乐在这款游戏中的地位不可忽视,成为了推动体验的重要元素。 推荐收听: Don’t Be So Serious:Death Stranding,一个讲述有关离别、联结和自我接纳的故事 Bones:第一次踏上旅程,面对恬静广阔的自然景观,音乐声恰好响起 BB’s Theme:最后一次走出首都节点城,再一次被音乐震撼,“我,是你吗?” I’ll Keep Coming:面对挫折后,能否在心底保留希望,继续前行 Death Stranding:当明知注定会失去一切时,还会满怀激情,走向故事的结尾吗? [ 点击图标可以在线播放 ] var options = {"narrow":false,"autoplay":false,"showlrc":3,"mode":"random","mu...
C++20 特性杂谈
C++ 的发展方向最重要的就是 C++ 标准委员会的统一决策,这种从不同行业、公司、国家和组织中集合的一群人,能达成共识并推出一些有价值的成果,已经非常难得。然而,C++ 仍然因此和其他新兴语言之间产生了差距。 C++ 标准的一种最重要的宗旨就是确保 C++ 在更新的过程中,看起来还是同一个语言,所以它需要满足一种统一的演化标准。这些标准概括起来有: 基于过去已有的成功模式作为演化方向,比如 RAII、类型安全检查 简单的事情用简单的方法做 从代码到硬件的零开销原则和直接映射 基于意见反馈来发展 保持稳定性和兼容性 维持与硬件的直接映射,简单的抽象机制,最小化的运行时系统 然而,过去很长一段时间,C++ 标准委员会都只专注于编程语言特性和标准库的方向,而没有在语言工具链方面做额外的事情,比如构建系统、包管理、链接原则等方面,这导致了 C++ 语言没有标准统一的开发和运行环境,每个操作系统、平台,甚至编程框架都可以规定自己的开发模式,各自为政。相关的软件也都依赖第三方企业或开源社区维护,用法和实现五花八门,没有统一标准的指导方针。 说回 C++20,这一次标准版本是可以和 C+...
Chapter.317
时间的速度是可控的
C++17 特性杂谈
C++17 相比于 C++14 来说,新增了不少新特性,然而,它并没有做到它被期望做到的发布版本,也就是没有特别重大的改变。 尽管在 C++17 之前,一些特性已经经过了深思熟虑的考虑,但最终依然出于各种原因,没有进入最终的版本中,有一些特性,方案讨论其实很早就开始并得到确定,但在后来的评定中被搁置,直到在 C++20 中才最终加入,比如概念(Concept),协程(Coroutine),这些大的特性任何一个放入 C++17 中,都可以让其变成一个大的版本发布。 因为按预期,C++ 标准发布采用一大一小的模式,C++17 作为继 C++11 之后的又一个大版本发布,所以当时有人主张将 C++17 延迟发布,以增加更多的重要特性,不过被 Bjarne Stroustrup 拒绝,拒绝理由其实也非常合理,“如果一项特性值得为之改变 C++ 标准的发布周期,那么就会有更多特性要求这么做”,C++11 已经是一个延迟的版本,并带来了很多因延迟导致的遗憾。 然而不可否认的是,C++17 依然是一个非常有价值的版本,其中有一些特性实实在在的帮助了程序员改善他们使用 C++ 的体验。 本文是...
Chapter.429
历史成为传说,传说成为神话
不能忘记的日子
有一些历史故事,想重新讲给你听
C++14 特性杂谈
C++ 标准从 C++11 开始,采用一个大版本后接一个小版本的更新思路,所以 C++14 是一个小版本更新的标准,它的主要目的是完善 C++11 标准。 一些 C++11 标准发布时还不稳定的特性,在 C++14 中被加入标准中。另外,这么做也是给编译器实现者们提供一个缓冲,在 C++11 标准实现之后的晚一些时间,提出一些小型的完善性的提案。 为了能完整的使用现代 C++ 特性,通常不会开启 C++11,而是会选择开启 C++14。 本文是 C++ 特性杂谈系列文章的第二篇: C++11 特性杂谈C++14 特性杂谈C++17 特性杂谈C++20 特性杂谈 数字分隔符数字分隔符是 C++14 中的一个小特性,但却引起了很大的讨论。讨论的根源在于,使用什么分隔符可以最大程度上既能有效表示分隔符的意义,同时还能兼容旧代码。 1auto num = 1'234'456s; // 1234456 秒 最终选定的分隔符是 ‘ ,这在我看来并不是一个特别好的决定,’ 用来包裹字符,虽然从语义上讲,数字分隔符不可能出现在一串数字的最前边,所以不会与字符产生冲突...
Chapter.72
人是自身及其所有记忆的总和
C++11 特性杂谈
C++11 就像是一个新的语言,它弥补了之前 C++ 中的很多问题,引入的大量新特性,使 C++ 变成了一个非常易用的计算机语言,这让很多新程序员开始学习 C++,也让 C++ 重新焕发生机。 可以说,C++11 代表着现代 C++,使用 C++11 标准编写 C++ 代码已经成为一个最基本的项目管理要求,下一个这样的分界线应该是 C++20 了。 然而,C++11 的推出实际上困难重重,它最初提案时的版本是 C++0x,因为就没打算在 2010 年之后推出。很多 C++11 的新特性,在 2000 年之前就已经被提出了,一些特性已经在 Boost 库中被实现。C++ 语言作为一种非集权的计算机语言,在推出新标准时,需要考虑非常多的问题,又因为有各种领域、行业、公司的人一起参与拟定和决策,让 C++ 标准的最终成型变得更为艰难。 另外,C++ 的教学和很多行业的接受度并没有那么积极,导致 C++11 在推出十几年后,很多软件和库依然没有得到全面的更新和替代。对于标准委员会、编译器厂商来说已经是过去的东西,但对大多数普通 C++ 用户来说,却是未来。结果就是,这么多年后,C++11...
如何展开可变参数模板的参数包
C++11 引入可变参数模板(variadic template),可以接受任意数量的模板参数,这对模板的用法是一个很大的改进。然而,可变参数模板的使用也很复杂,在 C++11 中,模板参数包不能直接展开,需要使用递归或者逗号表达式的方式展开,写法比较繁琐。C++17 引入了折叠表达式的语法,用来对可变参数模板中的参数做展开。 本文介绍与之相关的内容,方便有需要的读者在自己的项目中实践可变参数模板特性。 基础什么是可变参数模板模板参数列表可变的模板,如下示例: 1234// 常规模板template<typename T> void f(T arg);// 可变参数模板template<typename... T> void f(T... args); 注意其中的省略号用法,两个地方出现了省略号: 在模板参数列表中,... 出现在 typename 后边,用来表示 T 是一个可变长的模板参数 在模板函数参数列表中,... 出现在模板参数类型 T 后边,用来表示 args 是一个模板参数包 我们在函数内部需要使用 args 时,要遵循模板参数包的使用规则...














