截止至 C++20 。

图谱

现代C++知识概要.svg

Markdown

# 现代 C++ 知识概要

## 语言基础

### 常规语法

#### 语法基础与流程控制
#### 数据类型(※函数指针※)
#### 面向对象(※虚表相关※)
#### 标准库容算法、容器与迭代器
#### 运算符重载与lambda
#### CV限定符、文件操作···

### 基础概念

#### 宏的原理
#### 指针与引用
#### 栈区与堆区

## RAII

### 生命周期

#### 生存期与存储期
#### 值类别与引用
#### 移动语义
#### 完美转发
#### 智能指针

### 异常处理

#### try-catch 基础
#### 异常规范
#### noexcept 保证

## 编译相关

### 常规概念

#### 编译过程与优化
#### 头文件原理
#### inline、static 作用
#### 内部链接与外部链接
#### 静态库与动态库
#### 编译器相关
#### 模块的编译(C++20)

### 编译控制

#### CMake
#### vcpkg 包管理

## 模板编程

### 泛型编程

#### 静态类型推断(auto、decltype)
#### 模板展开原理
#### 特化、偏特化
#### 包展开与折叠表达式
#### SFINAE 规则与类型约束
#### 标准库常用模板
#### 约束与概念(C++20)

### 编译期操作

#### const 与 constexpr
#### 编译期分支与函数

## 并发编程

### 并发编程基础

#### 线程相关概念
#### std::thread 的应用
#### std::async 与 std::future
#### 协程(C++20)

### 同步与互斥

#### 互斥锁与读写锁
#### 条件变量
#### 原子变量
#### 信号量、屏障(C++20)

## 杂项

### 语言特性

#### ODR(单一定义规则)
#### 名称查找规则(※名称依赖查找※)
#### 显式类型转换与自动转换规则
#### 函数重载决议
#### 结构化绑定
#### 零初始化、聚合初始化
#### 初始化列表(initializer_list)
#### 用户定义字面量

### 标准库

#### 内存分配器
#### 时间(chrono)
#### 文件系统(filesystem)
#### 范围与视图(C++20)

### 实用技巧

#### 静态注册(静态构造)
#### 奇异递归模板法