# cpp_new_features **Repository Path**: KunDa2/cpp_new_features ## Basic Information - **Project Name**: cpp_new_features - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-05 - **Last Updated**: 2025-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C++ 标准特性演示项目 本项目是一个全面的C++标准特性演示项目,涵盖了C++14、C++17、C++20和C++23的主要特性。每个特性都配有详细的示例代码和说明文档,帮助开发者更好地理解和使用现代C++特性。 ## 项目结构 ``` . ├── cpp14/ # C++14 特性演示 ├── cpp17/ # C++17 特性演示 ├── cpp20/ # C++20 特性演示 └── cpp23/ # C++23 特性演示 ``` 每个目录都包含: - 特性演示源代码 - README.md 文件(详细介绍该版本的特性) - CMakeLists.txt 文件(构建配置) ## 特性覆盖 ### C++14 - 智能指针 - 废弃属性 - 数字分隔符 - 二进制字面量 - 变量模板 - 泛型Lambda - 自动返回类型 - std::quoted - std::exchange - std::integer_sequence ### C++17 - 结构化绑定 - if constexpr - 内联变量 - 折叠表达式 - 文件系统 - std::optional - std::variant - std::any - std::string_view - std::invoke - if/switch 初始化器 - std::byte - std::apply - 并行算法 ### C++20 - 概念 - 范围库 - 协程 - 模块 - std::format - std::span - 三路比较 - 指定初始化器 - constexpr容器 - std::jthread - consteval和constinit ### C++23 - 堆栈跟踪 - 多维下标运算符 - if consteval - 扩展属性 - 显式对象参数 - deducing this - 自动解构 - 期望值(std::expected) 注意:C++23中的网络库、反射、协程改进、模块改进、范围改进、格式化改进、视图改进、智能指针改进等特性因编译器支持程度或标准状态,暂未在本项目中实现。 ## 编译环境要求 - 支持C++14/17/20/23的现代编译器 - CMake 3.15或更高版本 - C++标准库实现(如libstdc++、libc++) ## 编译和运行 ### 基本编译 1. 克隆仓库: ```bash git clone [repository-url] cd cpp_new ``` 2. 创建构建目录: ```bash mkdir build cd build ``` 3. 配置项目: ```bash cmake .. ``` 4. 编译项目: ```bash make ``` 5. 运行示例: ```bash # 运行特定版本的示例 ./cpp14/cpp14_features ./cpp17/cpp17_features ./cpp20/cpp20_features ./cpp23/cpp23_features # 运行汇总所有标准的主程序(如果启用) ./cpp_features ``` ### 编译选项 项目提供了灵活的编译选项,可以选择性地编译不同的C++标准特性: #### 基本选项 - `BUILD_CPP14`: 编译C++14特性演示(默认:ON) - `BUILD_CPP17`: 编译C++17特性演示(默认:ON) - `BUILD_CPP20`: 编译C++20特性演示(默认:ON) - `BUILD_CPP23`: 编译C++23特性演示(默认:ON) - `BUILD_MAIN_EXECUTABLE`: 编译汇总所有标准的主可执行文件(默认:ON) #### 便捷选项 - `BUILD_ALL_STANDARDS`: 编译所有C++标准特性(覆盖单独选项,默认:OFF) #### 使用示例 **示例1:只编译C++14和C++17特性** ```bash cmake .. -DBUILD_CPP14=ON -DBUILD_CPP17=ON -DBUILD_CPP20=OFF -DBUILD_CPP23=OFF make ``` **示例2:只编译C++20特性** ```bash cmake .. -DBUILD_CPP14=OFF -DBUILD_CPP17=OFF -DBUILD_CPP20=ON -DBUILD_CPP23=OFF make ``` **示例3:编译所有标准特性(使用便捷选项)** ```bash cmake .. -DBUILD_ALL_STANDARDS=ON make ``` **示例4:只编译独立可执行文件,不编译汇总程序** ```bash cmake .. -DBUILD_MAIN_EXECUTABLE=OFF make ``` **示例5:指定GCC版本并选择特性** ```bash cmake .. -DGCC_VERSION=13 -DBUILD_CPP14=ON -DBUILD_CPP17=ON -DBUILD_CPP20=ON -DBUILD_CPP23=ON make ``` #### 编译器选择选项 - `GCC_VERSION`: 指定GCC版本(例如:9, 10, 11, 12, 13) - `CROSS_COMPILE`: 交叉编译前缀(例如:arm-linux-gnueabihf) **示例:使用GCC 13编译** ```bash cmake .. -DGCC_VERSION=13 make ``` **示例:交叉编译** ```bash cmake .. -DCROSS_COMPILE=arm-linux-gnueabihf make ``` #### 查看所有可用选项 在CMake配置阶段,项目会显示当前选择的编译选项: ``` -- ======================================== -- C++标准特性编译选项: -- BUILD_CPP14: ON -- BUILD_CPP17: ON -- BUILD_CPP20: ON -- BUILD_CPP23: ON -- ======================================== ``` #### 使用ccmake交互式配置 你也可以使用CMake的交互式配置工具: ```bash ccmake .. ``` 然后使用方向键选择选项,按Enter切换ON/OFF,按'c'配置,按'g'生成配置文件。 ## 代码风格 本项目遵循以下代码风格规范: - 使用2空格缩进 - 类名和方法名使用PascalCase - 常量和宏使用SCREAMING_SNAKE_CASE - 变量名使用snake_case - 成员变量使用m_前缀 - 使用命名空间组织代码 ## 文档规范 - 每个特性都有详细的注释说明 - 示例代码包含完整的错误处理 - README.md文件提供特性概述和使用说明 - 代码中包含必要的编译期和运行时检查 ## 使用说明 1. 查找特定特性: - 查看对应版本的README.md文件 - 在源代码目录中查找对应的.cpp文件 2. 运行示例: - 编译整个项目 - 运行特定版本的示例程序 - 查看控制台输出了解特性演示 3. 学习特性: - 阅读源代码中的注释 - 参考README.md中的说明 - 尝试修改示例代码进行实验 ## 注意事项 - 确保使用支持相应C++标准的编译器 - 某些特性可能需要特定的编译器选项 - 网络库支持可能需要特定的系统库 - 反射支持可能需要特定的编译器版本 - 协程支持可能需要特定的运行时库