C 11标准中“顶级cv-qualifiers”的定义在哪里?

the draft C++11 standard: N3337年,我发现几个参考顶级cv限定词,但没有定义.

解决方法

这个问题让我有机会学习新的东西,所以我在这里分享,我没有写下面的段落!

在C中,应用于类型的第一级的cv-qualifier称为toplevel cv-qualifier.例如,在:

T *const p;

顶级cv-qualifier是const,并且在:

T const *volatile q;

顶级cv-qualifier是不稳定的.另一方面:

T const volatile *q;

没有顶级cv限定词.在这种情况下,cv-qualifiers const和volatile出现在第二级.

函数的签名包括出现在该函数参数类型中的所有cv限定符,除了出现在参数类型顶层的限定符除外.

例如,在:

int f(char const *p);

const限定符不在参数声明的顶层,因此它是函数签名的一部分.

另一方面,在:

int f(char *const p);

const限定符处于顶级,因此它不是函数签名的一部分.
功能具有与以下相同的签名:

int f(char *p);

资料来源:Top-Level cv-Qualifiers in Function Parameters

我在标准中找不到定义,但是我在上面发布的内容在N3337§8.3.5-5中有明确规定

After producing the list of parameter types,any top-level
cv-qualifiers modifying a parameter type are deleted when forming the
function type.

编辑:
在撰写上述文章时,标准中的定义无法找到,但现在有一个as pointed out by Shafik

n4296摘录:

In this International Standard,the notation cv (or cv1,cv2,etc.),used in the description of types,represents an arbitrary set of cv-qualifiers,i.e.,one of {const},{volatile},{const,volatile},or the empty set. For a type cv T,the top-level cv-qualifiers of that type are those denoted by cv. [Example: The type corresponding to the type-id const int& has no top-level cv-qualifiers. The type corresponding to the typeid volatile int * const has the top-level cv-qualifier const. For a class type C,the type corresponding to the type-id void (C::* volatile)(int) const has the top-level cv-qualifier volatile. — end example ]

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录<future>future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...