主要观点:推荐 Abseil 作为新 C++项目实用代码的首选,原因包括与当前和未来 C++标准兼容、与 Google OSS 项目兼容、提供升级支持、有生产经验以及有不同设计优先级等。
关键信息:
- 与 C++标准兼容:Abseil 中的抽象与 C++14、C++17 及后续版本的特性匹配,能提前访问未来标准库的功能,且通过预处理器条件结构实现与标准类型的转换。
- 与 Google OSS 项目兼容:多年来 Google 对兼容性需求变化,Abseil 有助于解决与其他 Google OSS 项目的 API 摩擦问题。
- 升级支持:推荐“live at head”,承诺代码按兼容性指南行为则不会因 Abseil 变化而中断,若需重构会提供工具,也可选择不“live at head”并定期获得支持分支。
- 生产经验:Abseil 库有在 Google 生产环境的使用经验,包含一些针对生产问题的小特性。
- 不同设计优先级:C++标准注重运行时不付费和通用 API,Abseil 则针对常见用例提供优化设计,如
absl::Time
和absl::Duration
类型。
重要细节: - Google 内部有超过 2.5 亿行 C++代码且几乎每个项目都从源头构建,以解决软件工程中的版本不匹配等问题。
- 在 Abseil 的
string_view.h
中通过预处理器条件结构处理与std::string_view
的关系。 - 在 Google Cloud 等项目中,Abseil 能解决 API 依赖问题。
- Abseil 的更新命令行标志 API 包含“retired flags”特性以处理大型共享代码基中的问题。
- 不同设计优先级的例子中,
absl::Time
和absl::Duration
类型针对常见任务提供更简单的代码。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。