这是一份关于在 C++ 中实现无寿命注解的内存安全引用类型的提案,主要内容如下:
- 提案目标:探索无寿命参数的内存安全性可行性,解释使遗留左值和右值引用内存安全的不可行性,解决使用寿命注解的安全模型的常见反对意见。
- 安全引用:“安全 C++”引入了编译时内存安全的综合设计,其中借用检查模型需要寿命参数,增加了表达能力但使语言类型系统复杂化。本提案介绍了一种替代的借用检查风格,无需寿命注解即可保证寿命安全。
- 排他性:
T%
是可变安全引用,const T%
是共享安全引用,安全引用强制排他性,而遗留引用不强制,需要单独的安全和不安全引用类型以保证健全性和表达性。 - 约束规则:实现了两组约束规则,自由函数通过参数寿命的最短者来约束返回引用,非静态成员函数通过隐式对象寿命来约束返回引用。
- 二等引用:引用可分为两类,一等引用可传入函数、从函数返回、构成对象并存储在结构中,二等引用只能传入函数。安全引用比二等引用更强大,但编译器仍需实现借用检查。
- 其他安全方面:详细介绍了安全 C++提案中的四类内存安全,包括寿命安全、类型安全、线程安全和运行时检查,强调需要新的标准库和工具。
- 实现一等引用:目前的安全引用设计还不足以替代 C++ 中所有必要的不安全机制,需要支持诸如迭代器、视图和具有引用语义的 RAII 类型等。目前关于安全引用的解决方案存在问题,如处理引用到引用的情况,而 Rust 的寿命参数是目前已知的可行解决方案,可提高 C++ 的安全性并改善与 Rust 的互操作性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。