跳到主要内容

命名要求

此页面上列出的命名要求是 C++ 标准规范文本中用于定义标准库期望的命名要求。

其中一些要求正在 C++20 中使用概念语言特性进行形式化。在此之前,程序员有责任确保库模板使用满足这些要求的模板参数进行实例化。否则可能导致非常复杂的编译器诊断。

基本

公共DefaultConstructible指定该类型的对象可以默认构造
公共MoveConstructible(C++11)指定该类型的对象可以从右值构造
公共CopyConstructible指定该类型的对象可以从左值构造
公共MoveAssignable(C++11)指定该类型的对象可以从右值赋值
公共CopyAssignable指定该类型的对象可以从左值赋值
公共Destructible指定该类型的对象可以被销毁

类型属性


注意:标准没有定义此子类别中指定名称的命名要求。这些是核心语言定义的类型类别。它们仅为保持一致性而作为命名要求包含在此处。


公共ScalarType非数组类型或类类型的对象类型
公共PODType (在 C++20 中已弃用)POD (Plain Old Data) 类型,与 C struct 兼容
公共TriviallyCopyable(C++11)这些类型的对象在复制其底层字节后仍能保持其值
公共TrivialType(C++11)这些类型的对象可以被平凡构造和复制
公共StandardLayoutType(C++11)这些类型对于与其他编程语言编写的代码进行通信很有用
公共ImplicitLifetimeType这些类型的对象可以隐式创建,并且它们的生命周期可以隐式开始

库范围

公共EqualityComparableoperator== 是一个等价关系
公共LessThanComparableoperator< 是一个严格弱序关系
公共Swappable可以通过不限定的非成员函数调用 swap() 进行交换
公共ValueSwappable(C++11)一个解引用为 Swappable 类型的 LegacyIterator
公共NullablePointer(C++11)一种支持空值的指针类型
公共Hash(C++11)一个 FunctionObject,对于不同的输入值,产生相同输出的概率很低
公共Allocator包含分配信息的类类型
公共FunctionObject可以使用函数调用语法调用的对象
公共Callable定义了调用操作的类型
公共Predicate一个 FunctionObject,对于一个参数,在不修改它的情况下返回一个可转换为 bool 的值
公共BinaryPredicate一个 FunctionObject,对于两个参数,在不修改它们的情况下返回一个可转换为 bool 的值
公共Compare一个建立排序关系的 BinaryPredicate

容器

公共容器允许使用迭代器访问元素的数据结构
公共ReversibleContainer使用双向迭代器的容器
公共AllocatorAwareContainer(C++11)使用分配器的容器
公共SequenceContainer元素线性存储的容器
公共ContiguousContainer(C++17)元素存储在相邻内存地址的容器
公共AssociativeContainer通过将元素与键关联来存储元素的容器
公共UnorderedAssociativeContainer(C++11)通过将元素与键关联并将它们存储在桶中的容器

容器元素

公共DefaultInsertable(C++11)元素可以在未初始化的存储中默认构造
公共CopyInsertable(C++11)元素可以在未初始化的存储中复制构造
公共MoveInsertable(C++11)元素可以在未初始化的存储中移动构造
公共EmplaceConstructible(C++11)元素可以在未初始化的存储中构造
公共Erasable(C++11)元素可以使用分配器销毁

迭代器

公共LegacyIterator访问某些数据结构中数据的通用概念
公共LegacyInputIterator可用于读取数据的迭代器
公共LegacyOutputIterator可用于写入数据的迭代器
公共LegacyForwardIterator可用于多次读取数据的迭代器
公共LegacyBidirectionalIterator可递增和递减的迭代器
公共LegacyRandomAccessIterator可在常量时间内前进的迭代器
公共LegacyContiguousIterator(C++17)指向连续分配元素的迭代器
公共ConstexprIterator(C++20)可在常量表达式求值期间使用的迭代器

流 I/O 函数

公共非格式化输入函数一个不跳过前导空格并计算已处理字符的流输入函数
公共格式化输入函数一个跳过前导空格的流输入函数
公共非格式化输出函数一个基本的流输出函数
公共格式化输出函数一个在错误时设置 failbit 并返回流引用的流输出函数

格式化程序

公共BasicFormatter(C++20)抽象给定格式化参数类型和字符类型的格式化操作
公共Formatter(C++20)定义格式化库使用的函数

随机数生成

公共SeedSequence(C++11)消耗一个整数序列并产生一个 32 位无符号值序列
公共UniformRandomBitGenerator(C++11)返回均匀分布的随机无符号整数
公共RandomNumberEngine(C++11)一个确定性的 UniformRandomBitGenerator,由种子定义
公共RandomNumberEngineAdaptor(C++11)一个转换另一个 RandomNumberEngine 输出的 RandomNumberEngine
公共RandomNumberDistribution(C++11)返回根据给定数学概率密度函数分布的随机数

并发

公共BasicLockable(C++11)为执行代理(即线程)提供独占所有权语义
公共Lockable(C++11)一个支持尝试获取锁的 BasicLockable
公共TimedLockable(C++11)一个支持定时获取锁的 Lockable
公共SharedLockable(C++14)为执行代理(即线程)提供共享所有权语义
公共SharedTimedLockable(C++14)一个支持定时获取锁的 SharedLockable
公共Mutex(C++11)一个防止数据竞争和顺序一致性同步的 Lockable
公共TimedMutex(C++11)一个防止数据竞争和顺序一致性同步的 TimedLockable
公共(C++17)一个支持共享所有权语义的 Mutex
公共SharedTimedMutex(C++14)一个支持共享所有权语义的 TimedMutex

范围

公共RangeAdaptorObject(C++20)一个从 viewable_range 和额外参数创建范围适配器FunctionObject
公共RangeAdaptorClosureObject(C++20)一个支持管道操作符的 FunctionObject

其他

公共UnaryTypeTrait(C++11)描述类型的属性
公共BinaryTypeTrait(C++11)描述两种类型之间的关系
公共TransformationTrait(C++11)修改类型的属性
公共Clock(C++11)聚合持续时间、时间点和获取当前时间点的函数
公共TrivialClock(C++11)一个不抛出异常的 Clock
公共字符特性(CharTraits)定义字符类型的类型和函数
公共位掩码类型(BitmaskType)位集、整数或枚举
公共数值类型(NumericType)一个初始化实际上等同于赋值的类型
公共RegexTraits(C++11)定义正则表达式库使用的类型和函数
公共LiteralType(C++11)一个具有 constexpr 构造函数的类型

命名要求

此页面上列出的命名要求是 C++ 标准规范文本中用于定义标准库期望的命名要求。

其中一些要求正在 C++20 中使用概念语言特性进行形式化。在此之前,程序员有责任确保库模板使用满足这些要求的模板参数进行实例化。否则可能导致非常复杂的编译器诊断。

基本

公共DefaultConstructible指定该类型的对象可以默认构造
公共MoveConstructible(C++11)指定该类型的对象可以从右值构造
公共CopyConstructible指定该类型的对象可以从左值构造
公共MoveAssignable(C++11)指定该类型的对象可以从右值赋值
公共CopyAssignable指定该类型的对象可以从左值赋值
公共Destructible指定该类型的对象可以被销毁

类型属性


注意:标准没有定义此子类别中指定名称的命名要求。这些是核心语言定义的类型类别。它们仅为保持一致性而作为命名要求包含在此处。


公共ScalarType非数组类型或类类型的对象类型
公共PODType (在 C++20 中已弃用)POD (Plain Old Data) 类型,与 C struct 兼容
公共TriviallyCopyable(C++11)这些类型的对象在复制其底层字节后仍能保持其值
公共TrivialType(C++11)这些类型的对象可以被平凡构造和复制
公共StandardLayoutType(C++11)这些类型对于与其他编程语言编写的代码进行通信很有用
公共ImplicitLifetimeType这些类型的对象可以隐式创建,并且它们的生命周期可以隐式开始

库范围

公共EqualityComparableoperator== 是一个等价关系
公共LessThanComparableoperator< 是一个严格弱序关系
公共Swappable可以通过不限定的非成员函数调用 swap() 进行交换
公共ValueSwappable(C++11)一个解引用为 Swappable 类型的 LegacyIterator
公共NullablePointer(C++11)一种支持空值的指针类型
公共Hash(C++11)一个 FunctionObject,对于不同的输入值,产生相同输出的概率很低
公共Allocator包含分配信息的类类型
公共FunctionObject可以使用函数调用语法调用的对象
公共Callable定义了调用操作的类型
公共Predicate一个 FunctionObject,对于一个参数,在不修改它的情况下返回一个可转换为 bool 的值
公共BinaryPredicate一个 FunctionObject,对于两个参数,在不修改它们的情况下返回一个可转换为 bool 的值
公共Compare一个建立排序关系的 BinaryPredicate

容器

公共容器允许使用迭代器访问元素的数据结构
公共ReversibleContainer使用双向迭代器的容器
公共AllocatorAwareContainer(C++11)使用分配器的容器
公共SequenceContainer元素线性存储的容器
公共ContiguousContainer(C++17)元素存储在相邻内存地址的容器
公共AssociativeContainer通过将元素与键关联来存储元素的容器
公共UnorderedAssociativeContainer(C++11)通过将元素与键关联并将它们存储在桶中的容器

容器元素

公共DefaultInsertable(C++11)元素可以在未初始化的存储中默认构造
公共CopyInsertable(C++11)元素可以在未初始化的存储中复制构造
公共MoveInsertable(C++11)元素可以在未初始化的存储中移动构造
公共EmplaceConstructible(C++11)元素可以在未初始化的存储中构造
公共Erasable(C++11)元素可以使用分配器销毁

迭代器

公共LegacyIterator访问某些数据结构中数据的通用概念
公共LegacyInputIterator可用于读取数据的迭代器
公共LegacyOutputIterator可用于写入数据的迭代器
公共LegacyForwardIterator可用于多次读取数据的迭代器
公共LegacyBidirectionalIterator可递增和递减的迭代器
公共LegacyRandomAccessIterator可在常量时间内前进的迭代器
公共LegacyContiguousIterator(C++17)指向连续分配元素的迭代器
公共ConstexprIterator(C++20)可在常量表达式求值期间使用的迭代器

流 I/O 函数

公共非格式化输入函数一个不跳过前导空格并计算已处理字符的流输入函数
公共格式化输入函数一个跳过前导空格的流输入函数
公共非格式化输出函数一个基本的流输出函数
公共格式化输出函数一个在错误时设置 failbit 并返回流引用的流输出函数

格式化程序

公共BasicFormatter(C++20)抽象给定格式化参数类型和字符类型的格式化操作
公共Formatter(C++20)定义格式化库使用的函数

随机数生成

公共SeedSequence(C++11)消耗一个整数序列并产生一个 32 位无符号值序列
公共UniformRandomBitGenerator(C++11)返回均匀分布的随机无符号整数
公共RandomNumberEngine(C++11)一个确定性的 UniformRandomBitGenerator,由种子定义
公共RandomNumberEngineAdaptor(C++11)一个转换另一个 RandomNumberEngine 输出的 RandomNumberEngine
公共RandomNumberDistribution(C++11)返回根据给定数学概率密度函数分布的随机数

并发

公共BasicLockable(C++11)为执行代理(即线程)提供独占所有权语义
公共Lockable(C++11)一个支持尝试获取锁的 BasicLockable
公共TimedLockable(C++11)一个支持定时获取锁的 Lockable
公共SharedLockable(C++14)为执行代理(即线程)提供共享所有权语义
公共SharedTimedLockable(C++14)一个支持定时获取锁的 SharedLockable
公共Mutex(C++11)一个防止数据竞争和顺序一致性同步的 Lockable
公共TimedMutex(C++11)一个防止数据竞争和顺序一致性同步的 TimedLockable
公共(C++17)一个支持共享所有权语义的 Mutex
公共SharedTimedMutex(C++14)一个支持共享所有权语义的 TimedMutex

范围

公共RangeAdaptorObject(C++20)一个从 viewable_range 和额外参数创建范围适配器FunctionObject
公共RangeAdaptorClosureObject(C++20)一个支持管道操作符的 FunctionObject

其他

公共UnaryTypeTrait(C++11)描述类型的属性
公共BinaryTypeTrait(C++11)描述两种类型之间的关系
公共TransformationTrait(C++11)修改类型的属性
公共Clock(C++11)聚合持续时间、时间点和获取当前时间点的函数
公共TrivialClock(C++11)一个不抛出异常的 Clock
公共字符特性(CharTraits)定义字符类型的类型和函数
公共位掩码类型(BitmaskType)位集、整数或枚举
公共数值类型(NumericType)一个初始化实际上等同于赋值的类型
公共RegexTraits(C++11)定义正则表达式库使用的类型和函数
公共LiteralType(C++11)一个具有 constexpr 构造函数的类型