C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- C++ 具名要求: 函数对象 (FunctionObject)
- C++ 具名要求: 二元谓词 (BinaryPredicate)
- C++ 具名要求: 可默认构造 (DefaultConstructible)
- C++ 具名要求: 可复制赋值 (CopyAssignable)
- C++ 具名要求: 可复制构造 (CopyConstructible)
- C++ 具名要求: 可移动赋值 (MoveAssignable) (C++11 起)
- C++ 具名要求: 可移动构造 (MoveConstructible) (C++11 起)
- C++ 具名要求: 可析构 (Destructible)
- C++ 具名要求: 可平凡复制 (TriviallyCopyable)
- C++ 具名要求: 可相等比较 (EqualityComparable)
- C++ 具名要求: 可小于比较 (LessThanComparable)
- C++ 具名要求: 比较 (Compare)
- C++ 具名要求: 字面类型 (LiteralType)
- C++ 具名要求: 简旧数据类型 (PODType)
- C++ 具名要求: 平凡类型 (TrivialType)
- C++ 具名要求: 标准布局类型 (StandardLayoutType)
- C++ 具名要求: 遗留向前迭代器 (LegacyForwardIterator)
- C++ 具名要求: 可交换 (Swappable)
- C++ 具名要求: 值可交换 (ValueSwappable)
- C++ 具名要求: 可空指针 (NullablePointer) (C++11 起)
- C++ 具名要求: 散列 (Hash)
- C++ 具名要求: 分配器 (Allocator)
- C++ 具名要求: 可调用 (Callable)
- C++ 具名要求: 谓词 (Predicate)
- C++ 具名要求: 容器 (Container)
- C++ 具名要求: 序列容器 (SequenceContainer)
- C++ 具名要求: 连续容器 (ContiguousContainer)
- C++ 具名要求: 可逆容器 (ReversibleContainer)
- C++ 具名要求: 关联容器 (AssociativeContainer)
- C++ 具名要求: 具分配器容器 (AllocatorAwareContainer)
- C++ 具名要求: 无序关联容器 (UnorderedAssociativeContainer)
- C++ 具名要求: 可默认插入 (DefaultInsertable)
- C++ 具名要求: 可复制插入 (CopyInsertable)
- C++ 具名要求: 可移动插入 (MoveInsertable) (C++11 起)
- C++ 具名要求: 可就位构造 (EmplaceConstructible) (C++11 起)
- C++ 具名要求: 可擦除 (Erasable)
- C++ 具名要求: 遗留迭代器 (LegacyIterator)
- C++ 具名要求: 遗留输出迭代器 (LegacyOutputIterator)
- C++ 具名要求: 遗留输入迭代器 (LegacyInputIterator)
- C++ 具名要求: 遗留双向迭代器 (LegacyBidirectionalIterator)
- C++ 具名要求: 遗留随机访问迭代器 (LegacyRandomAccessIterator)
- C++ 具名要求: 遗留连续迭代器 (LegacyContiguousIterator)
- C++ 具名要求: 常量表达式迭代器 (ConstexprIterator)
- C++ 具名要求: 有格式输入函数 (FormattedInputFunction)
- C++ 具名要求: 无格式输入函数 (UnformattedInputFunction)
- C++ 具名要求: 有格式输出函数 (FormattedOutputFunction)
- C++ 具名要求: 无格式输出函数 (UnformattedOutputFunction)
- C++ 具名要求: 种子序列 (SeedSequence)
- C++ 具名要求: 随机数引擎 (RandomNumberEngine)
- C++ 具名要求: 随机数分布 (RandomNumberDistribution)
- C++ 具名要求: 均匀随机位生成器 (UniformRandomBitGenerator)
- C++ 具名要求: 随机数引擎适配器 (RandomNumberEngineAdaptor)
- C++ 具名要求: 基本可锁定 (BasicLockable)
- C++ 具名要求: 可锁定 (Lockable)
- C++ 具名要求: 可定时锁定 (TimedLockable)
- C++ 具名要求: 互斥体 (Mutex)
- C++ 具名要求: 定时互斥体 (TimedMutex)
- C++ 具名要求: 共享互斥体 (SharedMutex)
- C++ 具名要求: 共享定时互斥体 (SharedTimedMutex)
- C++ 具名要求: 字符特征 (CharTraits)
- C++ 具名要求: 正则表达式特征 (RegexTraits)
- C++ 具名要求: 位掩码类型 (BitmaskType)
- C++ 具名要求: 数值类型 (NumericType)
- C++ 具名要求: 一元类型特征 (UnaryTypeTrait)
- C++ 具名要求: 二元类型特征 (BinaryTypeTrait)
- C++ 具名要求: 变换特征 (TransformationTrait)
- C++ 具名要求: 时钟 (Clock)
- C++ 具名要求: 平凡时钟 (TrivialClock)
- 注释
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
具名要求
此页面中列出的具名要求,是 C++ 标准的规范性文本中使用的具名要求,用于定义标准库的期待。
某些具名要求在 C++20 中正在以概念语言特性进行形式化。在那之前,确保以满足这些要求的模板实参实例化标准库模板是程序员的重担。若不这么做,则可能导致非常复杂的编译器诊断。
基本概念 | |
指定该类型对象可以默认构造 (具名要求) | |
(C++11) |
指定该类型对象可以从右值构造 (具名要求) |
指定该类型对象可以从左值构造 (具名要求) | |
(C++11) |
指定该类型对象可以从右值赋值 (具名要求) |
指定该类型对象可以从左值赋值 (具名要求) | |
指定该对象可以析构 (具名要求) | |
布局 | |
注意,标准并未定义这个子类别中指定的各名字的具名要求。 它们是由核心语言定义的类型分类。将它们作为具名要求于此处包含只是为了一致性。 | |
(C++11) |
拥有平凡的复制、赋值及析构函数的类 (具名要求) |
(C++11) |
拥有平凡的构造函数、赋值及析构函数的类 (具名要求) |
(C++11) |
非虚类,仅包含其他标准布局 (standard layout) 成员,且其全部具有相同的访问控制 (具名要求) |
POD(简旧数据)结构体,与 C 的 struct 兼容 (具名要求) | |
全库范围的概念 | |
operator== 是一种等价关系 (具名要求) | |
operator< 是一种严格弱序关系 (具名要求) | |
(C++11) |
可用无限定的非成员函数调用 swap() 进行交换的类型 (具名要求) |
(C++11) |
解引用为某种可交换 (Swappable) 类型的遗留迭代器 (LegacyIterator) (具名要求) |
(C++11) |
支持空值的指针式类型 (具名要求) |
(C++11) |
函数对象 (FunctionObject) ,对于不同输入值产生相同输出具有很低概率 (具名要求) |
包含分配信息的类类型 (具名要求) | |
能以函数调用语法进行调用的对象 (具名要求) | |
定义了调用操作的类型 (具名要求) | |
函数对象 (FunctionObject) ,对于一个实参,返回一个可转换为 bool 的值而不改动实参 (具名要求) | |
函数对象 (FunctionObject) ,对于两个实参,返回一个可转换为 bool 的值而不改动各实参 (具名要求) | |
建立一种顺序关系的二元谓词 (BinaryPredicate) (具名要求) |
容器 | |
允许通过迭代器访问元素的数据结构 (具名要求) | |
使用双向迭代器的容器 (具名要求) | |
使用分配器的容器 (具名要求) | |
线性存储各元素的容器 (具名要求) | |
(C++17) |
在相邻内存地址中存储各元素的容器 (具名要求) |
将元素与键相关联而存储它们的容器 (具名要求) | |
将元素与键关联并将它们存储于桶中的容器 (具名要求) | |
容器元素 | |
(C++11) |
可在未初始化存储中默认构造的元素 (具名要求) |
(C++11) |
可在未初始化存储中复制构造的元素 (具名要求) |
(C++11) |
可在未初始化存储中移动构造的函数 (具名要求) |
(C++11) |
可在未初始化存储中构造的元素 (具名要求) |
(C++11) |
可用分配器销毁的元素 (具名要求) |
迭代器 | |
在一些数据结构内访问数据的通用概念 (具名要求) | |
可用于读数据的迭代器 (具名要求) | |
可用于写数据的迭代器 (具名要求) | |
可用于多次读数据的迭代器 (具名要求) | |
可增可减的迭代器 (具名要求) | |
可在常数时间内增加的迭代器 (具名要求) | |
指向连续分配元素的迭代器 (具名要求) | |
(C++20) |
能在常量表达式求值中使用的迭代器 (具名要求) |
流 I/O 函数 | |
不跳过前导空格并对处理字符计数的流输入函数 (具名要求) | |
跳过前导空格的流输入函数 (具名要求) | |
基本流输出函数 (具名要求) | |
出错时设置失败位并返回流引用的流输出函数 (具名要求) | |
随机数生成 | |
(C++11) |
消耗一个整数序列,产出一个 32 位无符号值的序列 (具名要求) |
返回均匀分布的随机无符号整数 (具名要求) | |
(C++11) |
由种子定义的确定性均匀随机位生成器 (UniformRandomBitGenerator) (具名要求) |
对另一个随机数引擎 (RandomNumberEngine) 的输出进行变换的随机数引擎 (RandomNumberEngine) (具名要求) | |
返回服从给定数学概率密度函数分布的随机数 (具名要求) | |
并发 | |
(C++11) |
为执行代理(即线程)提供排他所有权语义 (具名要求) |
(C++11) |
支持尝试进行锁获取基本可锁定 (BasicLockable) (具名要求) |
(C++11) |
支持定时锁获取的可锁定 (Lockable) (具名要求) |
(C++11) |
提供免受数据竞争的保护和顺序一致同步操作的可锁定 (Lockable) (具名要求) |
(C++11) |
提供免受数据竞争的保护和顺序一致同步操作的可定时锁定 (TimedLockable) (具名要求) |
(C++17) |
支持共享所有权语义的互斥体 (Mutex) (具名要求) |
(C++14) |
支持共享所有权语义的定时互斥体 (TimedMutex) (具名要求) |
其他 | |
(C++11) |
描述一个类型的一项性质 (具名要求) |
(C++11) |
描述两个类型间的一种关系 (具名要求) |
(C++11) |
修改一个类型的一项性质 (具名要求) |
(C++11) |
聚合一种时长,一种时间点,和一个获取当前时间点的函数 (具名要求) |
(C++11) |
不抛异常的时钟 (Clock) (具名要求) |
为字符类型定义一些类型和函数 (具名要求) | |
位集合、整数或枚举 (具名要求) | |
初始化效率相当于赋值的类型 (具名要求) | |
(C++11) |
定义正则表达式库所使用的各个类型和函数 (具名要求) |
(C++11) |
拥有 constexpr 构造函数的类型 (具名要求) |
本节未完成 原因:任何其他遗漏的具名要求? |