C26是哪种型号的设备,能详细介绍一下吗?

摘要:我希望的 c++26 本文使用 macbook pro m4 + vscode 编写, 我使用的编译器是 g++-15 + glib
我希望的 c++26 本文使用 macbook pro m4 + vscode 编写, 我使用的编译器是 g++-15 + glibc++. 本文讲了我希望的 c++26. 我立个 flag, 如果 iso wg21 给 c++26 搞出了任何一条不符合我这些期望的, 我就要 fork g++-16 写一个 g++-1970 -std=b++-2026. 其中 b++ 是致敬了我们的根, bell labs. 我写的 c++ 是 c 派 心直嘴快 让 k&r 收拾 graydon 的鬼怪 rust 写的真有样 用 c++ 重写的时候我得在 手捧着《c++ 之旅》 这范儿传递到每代 我喜欢写代码直截了当不喜欢去绕弯子 讨厌安全性 也不喜欢被编译器管的太宽了 看站上 wg21 的是那帮支持 rust 快删了你的 hazard 过来仰望 bs 吧 我四句话有人就关了 有 graydon 的货 有 hoare 的憨子 都叫的正欢呢 讲安全性 那为什么 unwrap 炸了 cloudflare 别用安全性当借口 赶紧滚过来学 k&r 吧 所有 c++23 代码都能通过编译 在目前的 iso c++26 下, c++23 允许的一些危险操作, 需要加上 [[unsafe]]. 我支持的 iso c++26 提案特性 线性代数 这个不管设计成什么样我都能接受, 因为打 icpc 有用. 加强了 constexpr 和 consteval 非常好的 constexpr, 使我的常量在编译期完成. std::expected 这个值得重点讲, 非常好的错误处理. 比如说我有一个带取模的快速幂函数, 我希望模数非 \(0\), 就可以这么写: std::expected<long, std::string> pow(long x, long y, long mod) { if (mod == 0) return std::unexpected<std::string>("数学错误"s); long yt = 1; x %= mod; while (y) { if (y & 1) yt = yt * x % mod; x = x * x % mod; y >>= 1; } return yt; } 然后就可以这样处理结果: auto ans = pow(x, y, m); if (ans) std::println("{}", *ans); else std::println("{}", ans.error()); 我个人习惯使用 std::abort() 作为错误处理, 不过这样好像有点合理? std::flat_set 和 std::flat_map 用 std::vector 存储的排序数组, 可以当成平衡树用, 适合查询多而插入删除修改少的情况. 我当然还是手写 wblt 的了. std::is_within_lifetime 可以检测对象是否还活着, 遥遥领先了属于是. 对像我这样不手动操内存的人来说应该没啥用. 我非常反对的 iso c++26 提案特性 如果所有语言都在使劲浑身解数想要变成 rust, 那设计这个语言本来的目的是什么呢? java 是为了替代 c++, 而 java 发明了一次编译到处运行的 jvm. go 是为了替代 c++, 而 go 有通讯和可以比肩 python 的标准库. rust 是为了替代 c++, 而 rust 搞出的是借用和可变借用. 我从来没说过 rust 不好, 我承认我用 rust 写过 opengl. java 没有被 rust 同质化, java 依然到处都是空引用. go 也没有被 rust 同质化, go 依然在用 java 发明的垃圾回收. 如果 c++ 变成了用 c 语法写的 rust, 那么 c++ 还有什么存在的意义吗? 难道是为了让 c 程序员过渡到 rust 中间有个缓冲吗? 我不是说 k&r 的设计优秀, 但我觉得作为包括了 java 和 go 甚至 c# 和 python 在内的 c like 语言, 危险当然是有危险的价值的. 可以是速度, 可以是自由度, 可以是任何东西, 重要的是危险本身可以带来价值. hazard 指针 从提案设计来看, 很显然是 son of graydon. [[unsafe]] 无论无论如何, 你认为的危险操作可能是我需要的. 而且这会导致使用了这些危险操作的 c++23 代码无法通过 c++26 的编译, 这违背了 c++ 的 较新的 c++
阅读全文