48 | 显式对象参数、const 视图、expected 和 mdspan:C++23 的一些重要改进
吴咏炜

你好,我是吴咏炜。
显式对象参数
传统上,类的非静态成员函数都有一个隐式传递的 this 参数。正因为有这个隐式的参数,我们才能访问非静态数据成员。比如,optional 的实现里多半有类似下面的代码:
在这里,operator* 的实现可以理解为:
也就是说,通过 this 指针去访问 value_ 这样的数据成员。
不好玩的是,由于 optional 可以是 const,也可以是右值,我们需要把这个 operator* 的实现重复四遍。这就有点无聊了:
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. C++23引入了显式对象参数和可递归的lambda表达式,简化了代码编写,提高了代码的可读性和可维护性。 2. 显式对象参数的使用需要注意const传递问题,可以使用一些技巧将const性传递到成员变量上,例如使用propagate_const或编写辅助函数。 3. C++23中的expected成为了标准库的一部分,引入了“单子”成员函数来简化一些惯用法的表达,使得错误处理更加优雅和灵活。 4. 使用expected时一般会搭配std::error_code,而不是像之前的例子一样使用string,同时,错误检查部分也得到了优化,使得代码更加简洁和易读。 5. C++23引入了多维下标和mdspan,使得多维数据的下标表示更加方便和自然,同时提供了灵活的布局策略和访问策略,增强了对多维数据的操作和管理能力。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《现代 C++ 编程实战》,新⼈⾸单¥59
《现代 C++ 编程实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论

