用途
cpp-pro 是一个 C++ 专业技能,定位为精通 C++20 的专业能力,专注于现代 C++ 特性、性能优化与系统级编程。其目标是构建高性能应用、嵌入式系统、游戏引擎和底层系统软件,并强调内存安全与资源利用效率。
主要能力
C++20 现代特性
资料列出的 C++20 能力包括:
- Concepts:类型约束与模板要求
- Modules:以可导入模块替代头文件
- Ranges:惰性求值算法与视图
- Coroutines:使用 co_await 的异步编程
- Spaceship Operator:三路比较 <=>
- Designated Initializers:按名称初始化结构体成员
- std::format:类型安全的字符串格式化
- std::span:不拥有所有权的安全数组视图
- std::jthread:可自动 join 的线程
性能优化
- 模板元编程:编译期计算
- SIMD 编程:用于并行处理的向量指令
- 内存管理:智能指针、分配器、内存池
- 缓存感知算法:面向数据的设计模式
- 无锁编程:原子操作与内存序
- 编译器优化:基于性能剖析的优化、链接时优化
系统编程
- 底层 I/O:文件描述符、套接字、epoll/kqueue
- 内存映射:共享内存、内存映射文件
- 进程管理:fork、exec、信号处理
- 系统调用:POSIX/Linux 系统接口
- 嵌入式系统:裸机编程、实时约束
使用方式
资料给出的 Quick Start 指出,在以下情况调用该技能:
- 构建高性能 C++ 应用(游戏、仿真、交易)
- 系统级编程(设备驱动、嵌入式系统、操作系统)
- 性能优化(SIMD、缓存、无锁)
- 现代 C++20 特性(concepts、modules、ranges、coroutines)
- 模板元编程与编译期计算
- 跨平台库开发
不建议在以下情况调用:
- Web 开发 → 使用 frontend-developer 或 backend-developer
- 脚本任务 → 使用 python-pro 或 javascript-pro
- 无性能需求的简单工具 → 使用合适的语言
- 移动开发 → 使用 swift-expert 或 kotlin-specialist
适用场景
资料列出的适用场景包括:需要 C++ 速度的高性能应用(游戏引擎、仿真)、系统级软件(设备驱动、操作系统、嵌入式系统)、性能关键代码优化(SIMD、缓存优化、无锁编程)、将遗留 C++ 代码迁移到现代 C++20、构建跨平台 C++ 库与 SDK、模板元编程与编译期优化,以及使用 C++20 现代特性。
决策框架与最佳实践
资料提供了一个 C++20 特性决策树,分别针对类型约束(用 concepts 替代 SFINAE)、头文件管理(新项目用 modules)、数据转换(用 ranges 做惰性求值)、异步操作(I/O 密集用 coroutines)以及错误处理(可恢复错误用 std::expected、异常情况用 exceptions、底层代码用返回码)给出选择建议。
另有一张性能优化矩阵,列出瓶颈与对应方案及复杂度:CPU 密集计算用 SIMD 与并行(高)、内存分配用内存池与分配器(中)、缓存未命中用面向数据设计(高)、锁竞争用无锁结构(极高)、编译时间用 modules 与预编译头(低)。
最佳实践部分涵盖:现代 C++ 开发(优先组合而非继承、const 正确性、恰当使用 noexcept、显式构造与转换、处处 RAII);性能优化(先剖析再优化,使用 perf、VTune 或 Tracy;Rule of Zero;移动语义;谨慎内联;度量缓存效率);模板元编程(用 concepts 替代 SFINAE、尽可能 constexpr、使用类型特征与可变参数模板);并发与并行(避免过早加锁、理解内存序、future/promise 模式、I/O 用协程、优先线程池);系统级编程(零开销抽象、显式错误处理、RAII 资源管理、平台抽象隔离、单元测试/模糊测试/属性测试)。
反模式部分列出:内存管理中的裸 new/delete、手动资源管理、悬垂指针;性能上的过早优化、虚调用开销、不必要的拷贝;代码组织上的全头文件化、宏滥用、全局状态。
限制
资料仅提供技能定位、能力清单、决策框架与最佳实践,未提供具体安装命令、版本号、平台支持范围、收费或价格信息、以及性能基准数据,这些内容暂未提供。另外,该技能明确不适用于 Web 开发、脚本任务、无性能需求的简单工具和移动开发。
附加资源
资料提到详细技术参考见 REFERENCE.md,代码示例与模式见 EXAMPLES.md。