C++ 教程C++ 教程
    • 附录
    • 命令行界面
    • 代码风格
    • 关键字列表
    • 运算符优先级和结合方向
    • 预处理指令
    • 值类别
    • 第〇章 基本概念
    • 计算机
    • 编程
    • 编程语言
    • 第一章 感性认识 C++ 程序
    • 赋值和分支
    • 最麻烦的门槛
    • 第一个 C++ 程序
    • 输入
    • 综合运用
    • 循环
    • 更多的输出
    • 总结
    • 第二章 理性认识 C++ 程序
      • 第 1 部分 数据成分
      • 初识数组
      • 常量
      • 声明语句
      • 只读变量
        • 类型系统
        • 布尔类型
        • 字符类型
        • 浮点类型
        • 整型
      • 第 2 部分 运算成分
      • 算术运算符
      • 赋值运算符
      • 位运算符(选读)
      • 关系运算符
      • 算术类型隐式转换
      • 自增减运算符
      • 逻辑运算符
      • 其它常用运算符
      • 第 3 部分 控制成分
      • 复合语句
      • for 语句
      • if 语句
      • 跳转语句
      • 空语句
      • 作用域
      • switch 语句
      • while 语句
    • 总结
    • 第三章 过程式编程
    • 函数
    • 函数的定义、声明和调用
    • 函数的执行
    • 初识函数
    • 递归
    • 重新认识 C++ 程序
    • 再谈作用域
    • 总结
    • 第四章 POD 类型与结构
      • 数组
      • 二维数组
      • 数组的定义和初始化
      • 数组的用途
      • C 风格字符串
      • 迁移到 C 语言
      • 需要注意的 C 特性
      • C 输入输出
    • 枚举
      • 输入输出成分
      • 输入
      • 输入失败状态
      • 输出
      • 链表
      • new[] 和 delete[]
      • 链表的增删
      • 链表的构建
      • 安全性
      • 存储期
      • 指针
      • 何为指针
      • 指针和数组
      • 指针的定义 Ⅰ
      • 指针的定义 Ⅱ
      • 指针的简单使用
      • 结构体
      • 结构体的定义
      • 结构体的使用
    • 总结
    • 联合体
    • 第五章 初探面向对象
    • 构造函数
    • 复制构造函数
    • 预置构造函数
    • 例子:简单的字符串
    • 收尾工作
    • 重载
    • 引用
    • 浅复制与深复制
    • 总结
    • 第六章 运算符重载
    • 赋值运算符重载
    • 赋值与初始化
    • 类型转换重载
    • 只读成员函数
    • 友元
    • 类外定义成员函数
    • 非成员的运算符重载
    • 特殊运算符重载
    • 静态成员
    • 总结
    • `this` 指针
    • 第七章 继承与多态
      • 继承关系
      • 关于成员名
      • 派生类的构造
      • 继承中的隐式转换
      • 其它小问题
      • 保护成员
    • 多重继承
    • 简单的对象关系
      • 多态
      • 抽象类
      • C++ 风格类型转换
      • `override` 与 `final`
      • RTTI
      • 虚析构函数
      • 虚函数
    • 总结
    • 第八章 模板基础
    • 类模板
    • 默认实参
    • 函数模板
    • 非类型模板参数
      • STL 容器和迭代器
      • 容器适配器
      • 迭代器的概念
      • 初识迭代器
      • 迭代器的用途
      • `std::map`
      • 其它顺序容器
      • `std::set`
      • `std::vector`
    • 总结
    • 第九章 链接
    • C 中的链接
    • 多文件编译实践
    • 模板中的友元
    • 内联
    • 单一定义原则
    • 符号和连接
    • 模板的链接
    • 第十章 常用库介绍
      • 代数数据类型
      • 顶类型 `std::any`
      • 底类型
      • 通用积类型 `std::tuple`
      • 通用和类型 `std::variant`
      • 文件读写
      • C 风格输入输出
      • 流式输入输出
    • 文件系统
    • 伪随机数生成
      • 移动语义与智能指针
      • `std::move` 与转发引用
      • 所有权
      • 右值引用
      • `std::shared_ptr`
      • 特殊成员函数
    • 第十一章 函数式编程
      • 语法进阶
      • 实参依赖查找
      • 可调用
      • 预置比较
      • 语法基础
      • 闭包
      • 函数也即对象
      • 高阶函数
      • Lambda 表达式
      • Lambda 表达式捕获
    • `std::sort`
      • STL 算法
      • 迁移到 STLv1
      • 复制
      • 筛选
      • 其它算法
      • 初识范围
      • 归约
      • 排序
      • 变换
    • 第十二章 模板进阶
    • C++20 概念
    • 模板元编程
    • 模板特化与偏特化
      • 静态派发
      • 定制点
      • 类型擦除
  • 后记
  • 技术信息

第十二章 模板进阶

第十二章 模板进阶

本章继续深入模板相关主题,涵盖特化、静态派出、定制点、类型擦除、概念和模板元编程。

目录

  1. 模板特化与偏特化
  2. 静态派发
    • 定制点
    • 类型擦除
  3. C++20 概念
  4. 模板元编程

变换

下一个函数式特性是变换(Transform),别的编程语言习惯叫做映射(Map)。

C++20 概念

概念(Concepts)是 C++20 引入的语法,用于在编译期对模板参数施加约束。它让模板接口更清晰、错误信息更友好、重载选择更精确。

Table of Contents

  • 目录

Community

  • Edit this page
  • Star on GitHub
  • 我的主页
Built with Nuxt UI • © 2026