命名空间
变体
操作

命名要求

来自 cppreference.cn
< cpp
 
 
C++ 命名要求
基本
类型属性
全库范围




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
随机数
并发
(C++11)
范围
多维视图
其他

 

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

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

其中一些要求在C++20中通过概念语言特性得到了形式化。

目录

基本

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

类型属性

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

全库范围

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

Container(容器)

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

迭代器 (Iterator)

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

流I/O函数

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

格式化器

抽象给定格式化参数类型和字符类型的格式化操作
(命名要求)
定义格式化库使用的函数
(命名要求)

随机数生成

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

并发

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

范围

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

多维视图定制

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

其他

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