命名空间
变体
操作

具名要求

出自 cppreference.cn
< cpp
 
 
C++ 具名要求
 

本页列出的具名要求是在 C++ 标准的规范性文本中使用的具名要求,用于定义标准库的预期。

程序员有责任确保库模板使用满足这些要求的模板实参进行实例化。否则可能会导致非常复杂的编译器诊断信息。

其中一些要求在 C++20 中使用概念语言特性进行了形式化。

目录

基本

指定该类型的对象可以默认构造
(具名要求)
指定该类型的对象可以从右值构造
(具名要求)
指定该类型的对象可以从左值构造
(具名要求)
指定该类型的对象可以从右值赋值
(具名要求)
指定该类型的对象可以从左值赋值
(具名要求)
指定该类型的对象可以销毁
(具名要求)

类型属性

注意:标准未定义在此子类别中指定的具名要求。
这些是由核心语言定义的类型类别。 它们在此处作为具名要求仅是为了保持一致性。
不是数组类型或类类型的对象类型
(具名要求)
(在 C++20 中已弃用)
POD(Plain Old Data,纯旧数据)类型,与 C struct 兼容
(具名要求)
这些类型的对象在复制其底层字节后可以保持其值
(具名要求)
(C++11)(在 C++26 中已弃用)
这些类型的对象可以被平凡地构造和复制
(具名要求)
这些类型对于与用其他编程语言编写的代码进行通信很有用
(具名要求)
这些类型的对象可以被隐式创建,并且它们的生命周期可以被隐式启动
(具名要求)

库级别

布尔运算(operator&&operator||operator!)具有通常的语义
(具名要求)
operator== 是等价关系
(具名要求)
operator< 是严格弱序关系
(具名要求)
可以使用非限定的非成员函数调用 swap() 进行交换
(具名要求)
一个 LegacyIterator,它解引用为 Swappable 类型
(具名要求)
一种类似指针的类型,支持空值
(具名要求)
(C++11)
一个 FunctionObject,对于具有不同值的输入,它给出相同输出的概率很低
(具名要求)
一种包含分配信息的类类型
(具名要求)
一个可以使用函数调用语法调用的对象
(具名要求)
一种为其定义了调用操作的类型
(具名要求)
一个 FunctionObject,它为一个参数返回可转换为 bool 的值,而无需修改它
(具名要求)
一个 FunctionObject,它为两个参数返回可转换为 bool 的值,而无需修改它们
(具名要求)
一个 BinaryPredicate,它建立排序关系
(具名要求)

Container

允许使用迭代器访问元素的数据结构
(具名要求)
使用双向迭代器的容器
(具名要求)
使用分配器的容器
(具名要求)
元素线性存储的容器
(具名要求)
元素存储在相邻内存地址的容器
(具名要求)
通过将元素与键关联来存储元素的容器
(具名要求)
通过将元素与键关联存储在桶中的容器
(具名要求)
容器元素
元素可以在未初始化的存储中默认构造
(具名要求)
元素可以在未初始化的存储中复制构造
(具名要求)
元素可以在未初始化的存储中移动构造
(具名要求)
元素可以在未初始化的存储中构造
(具名要求)
(C++11)
元素可以使用分配器销毁
(具名要求)

Iterator

访问某些数据结构中数据的一般概念
(具名要求)
可用于读取数据的迭代器
(具名要求)
可用于写入数据的迭代器
(具名要求)
可用于多次读取数据的迭代器
(具名要求)
可以递增和递减的迭代器
(具名要求)
可以在恒定时间内前进的迭代器
(具名要求)
指向连续分配元素的迭代器
(具名要求)
可在常量表达式求值期间使用的迭代器
(具名要求)

流 I/O 函数

一个流输入函数,它不跳过前导空白并计算处理的字符数
(具名要求)
一个跳过前导空白的流输入函数
(具名要求)
一个基本流输出函数
(具名要求)
一个流输出函数,它在错误时设置 failbit 并返回对流的引用
(具名要求)

格式化器

抽象给定格式化实参类型和字符类型的格式化操作
(具名要求)
(C++20)
定义由格式化库使用的函数
(具名要求)

随机数生成

消耗整数序列并生成 32 位无符号值序列
(具名要求)
返回均匀分布的随机无符号整数
(具名要求)
一个确定性的 UniformRandomBitGenerator,由种子定义
(具名要求)
一个 RandomNumberEngine,它转换另一个 RandomNumberEngine 的输出
(具名要求)
返回根据给定的数学概率密度函数分布的随机数
(具名要求)

并发

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

范围

一个 FunctionObject,它从 viewable_range 和附加参数创建范围适配器
(具名要求)
一个支持管道运算符的 FunctionObject
(具名要求)

多维视图定制

控制 mdspan 中多维索引的映射
(具名要求)
一个保持 LayoutMapping 要求的策略
(具名要求)
一个控制 mdspan 中数据句柄访问的策略
(具名要求)

其他

描述类型的属性
(具名要求)
描述两种类型之间的关系
(具名要求)
修改类型的属性
(具名要求)
(C++11)
聚合持续时间、时间点和获取当前时间点的函数
(具名要求)
一个不抛出异常的 Clock
(具名要求)
为字符类型定义类型和函数
(具名要求)
位集、整数或枚举
(具名要求)
初始化实际上等于赋值的类型
(具名要求)
定义由正则表达式库使用的类型和函数
(具名要求)
具有 constexpr 构造函数的类型
(具名要求)