文章图片
大家过年好!
要搞明白什么是GSL , 需要先清楚 , 什么是C++ Core Guidelines 。
C++ Core Guidelines是一份简单的文档 , 里面描述了一组旨在编写现代C++代码的指导原则 。 这项工程由C++的原作者Bjarne Stroustrup发起并主导 , 主要聚焦在一些C++工程中出现的各种顶层设计问题 , 例如 , 接口设计 , 资源管理 , 内存管理和并发等 。 这些顶层设计会影响应用程序架构和库的设计 。 遵循这套指导原则 , 可以实现代码的静态类型安全(statically type-safe) , 规避潜在的资源泄漏问题 , 以及发现更多的代码逻辑错误 , 同时拥有更快的运行速度 。
而GSL(Guidelines Support Library)是由微软开发的 , C++ Core Guidelines指导原则的一个实现代码库 , 库中包含了C++ Core Guidelines里所建议的各种函数 , 类型等 。 整个代码库以各种头文件来实现 , 使用此代码库 , 需要使用支持C++ 14的编译器 。
好了 , 正文开始GSL的4.0.0版本已经正式可用 , 这次的版本包含了所有的安全编码规则 , 另外 , 我们还添加了一些额外的优化 。
有哪些变化?
> 废弃gsl::string_span
> 移除<gsl/multi_span>
> 头文件删除了 gsl_ 前缀
> 对not_null进行了修改
> gsl::span和std::span现已使用gsl::at的正确特化版本
> zstring系列不再要求使用空的尖括号 , 例如我们可以使用void foo(zstring str)来代替:void foo(zstring<> str)
> gsl::narrowing_error新增一个函数what() , 用以显示错误的详细信息
> finally和final_action现在被标记为[[nodiscard
> GSL将可以在禁用异常的环境中工作 , 但有一些警告
> 通过添加 GSL_NO_IOSTREAMS 标志 , GSL将在不支持iostream的环境中工作
> 更新了编译器支持
> CMake和构建优化
废弃gsl::string_span最新版的CppCoreGuidelines中删除了string_span 。 建议改用std::string_view , std::span或gsl::span 。 为了更紧密地使GSL与CppCoreGuidelines保持一致 , 我们弃用了string_span和zstring_span的实现 , 包括 basic_string_span、basic_zstring_span和所有相关类型 。目前 , 我们将继续保留 <gsl/string_span>头文件 , 但不会积极处理或维护它 。 可以在 README.md 中找到所有支持和不支持的类型/功能的列表 。
移除<gsl/multi_span>multi_span、strided_span和<gsl/multi_span>中的所有其他内容在一年前的GSL 3.0.0中已被弃用 , 现在是从库中删除它们及其相关测试的时候了 。
头文件删除了gsl_前缀以前在其名称中包含gsl_前缀的所有标头都已删除此前缀 。例如 , <gsl/gsl_algorithm>现在是<gsl/algorithm> 。gsl_前缀文件仍然存在并传递给更新的文件 , 但将在未来的版本中删除 。
对not_null进行了修改为了更紧密地使GSL与CppCoreGuidelines保持一致 , gsl::not_null现在只接受与 nullptr相当的类型 。以前 , 它只接受可从nullptr分配的类型 , 但这比CppCoreGuidelines的意图更严格 。
函数make_not_null和make_strict_not_null以及not_null比较运算符现在都是 noexcept 。
gsl::span和std::span现已使用gsl::at的正确特化版本gsl::span和std::span现在有自己独立的gsl::at特化 , 以确保两个版本的span之间的行为一致 。导入 <gsl/span> 时会引入两个重载版本 。std::span 重载可以与 <gsl/util> 分开包含 。
GSL将可以在禁用异常的环境中工作 , 但有一些警告gsl::narrow是库中唯一可能引发异常的部分 , 并且已移至其自己的头文件 <gsl/narrow> 中 。仅当启用异常时 , 此头文件才包含在 <gsl/gsl> 中 。这允许在环境中工作的库用户无一例外地使用库的所有其他组件 。
- 2200多年前,一名学者测出了地球周长,与现代测量值仅偏差7%
- 韩国货|三星败走、现代卖厂,韩国货不差,只是运气不好,碰上中国货崛起
- C++|西欧Q4报告出炉,小米之外realme表现大亮
- 战旗|Genesis2000--GUI窗口编写--OPTION下拉按钮
- 规划|四部门:2025年基本建成与现代金融体系建设相适应的标准体系
- 本文转自:上观香薰机是近年来流行的一款现代家居小型电器产品|那个喷水雾的家伙,叫加湿器还是香薰机?
- 动力机器人|卖身现代汽车后,波士顿动力机器人终于走上商用
- 投影仪|投影仪是现代家庭的刚需吗?家用投影仪的前景怎么样
- 秦腔现代剧《村上春秋》
- C++|这一回超长预热,红米K50:我等你!