来自主题.我在最近问过的一个问题中看到了这个术语,显然这是一个很好的术语,但我无法在stackoverflow上找到任何东西.
Jos*_*eld 46
有基本类型和复合类型.基本类型是算术类型void,和std::nullptr_t.复合类型是数组,函数,指针,引用,类,联合,枚举和指向非静态成员的指针.
甲CV-不合格类型是这些类型的任何.
对于任何cv-nonqualified类型,有三种相应的cv限定类型:
constcv-qualifiervolatilecv-qualifierconst和volatilecv-qualifiers但请注意,应用于数组类型的cv限定符实际上适用于其元素.
cv-qualified和cv-nonqualified类型是不同的.这是int一个独特的类型const int.
cv-unqualified类型是未由任何 cv限定符指定的类型.它们定义了一种类型的两个基本属性:常量和波动率.参见 C++ 03 3.9.3 CV-qualifiers§1:
3.9.1和3.9.2中提到的类型是cv不合格类型.每个类型是cv不合格的完整或不完整的对象类型或无效(3.9)有三个相应的cv限定版本的类型:
- 一个const限定版本,
- 一个挥发性合格的版本,和
- 一个常量-volatile限定版本.
术语对象类型(1.8)包括创建对象时指定的cv限定符.
constdecl-specifier-seq中存在一个说明符,声明了一个const限定对象类型的对象; 这样的对象叫做aconst object.
volatiledecl-specifier-seq中存在一个说明符,声明了一个volatile限定对象类型的对象; 这样的对象叫做avolatile object.在declspecifier-seq中存在两个cv限定符都声明了一个const-volatile限定对象类型的对象; 这样的对象叫做a
const volatile object.
cv代表const和volatile(并且更少mutable),两个属性限定类型.您可以std::remove_const在C++ 11中使用它们来操作它们.
优秀的cppreference网站为您提供更多信息.
为了回答你的问题,cv-unqualified类型要么没有,要么从cv-qualifiers中删除.例如int,cv不合格的部分const volatile int.
std::remove_cv<T>::type是不合格的部分T.
一般来说,它的意思是“相同的类型,但删除了任何 cv 限定符”,因此(例如)cv 的非限定版本void volatile * const x将是void *x.
但请注意,这里我从指针本身及其指向的内容中删除了 cv 限定符。在大多数情况下,cv-unqualified一次仅引用一个对象,因此指针本身的无 cv 限定版本仍将是void volatile *x,而它所指向的内容的无 cv 限定版本将是void *const x。
| 归档时间: |
|
| 查看次数: |
8044 次 |
| 最近记录: |