类型别名和类似类型
type aliasing and similar types
在 cpp 引用上,据说如果忽略它们指向同一类型的顶级 cv 限定符,则两个指针是相同的。在示例中,然后有这个示例
int (* const *)(int *) and int (* volatile *)(int *) are similar;
我想知道这些应该如何相似?AFAIK 那些表示指向函数指针的指针,为了简化,它们可以重写为
using XYZ = int(*)(int *);
const XYZ *; // A
volatile XYZ *; // B
在这种情况下,A 和 B 不是指向不同的类型吗?
在 cpp 引用上,如果忽略它们指向相同类型的顶级 cv 限定符,则说两个指针是相同的
差一点。它说:
非正式地说,如果忽略顶级简历资格,则两种类型是相似的:
它们是同一类型;或
它们都是指针,并且指向的类型相似;或者
请注意,相同与相似不同。
<小时 />const XYZ *; // A volatile XYZ *; // B
在这种情况下,A 和 B 不是指向不同的类型吗?
它们确实是不同的类型。但它们是相似的。
相关文章:
- 继承模板类中的类型别名
- 为什么 GCC 在使用类型别名时处理 const reinterpret_cast不同?
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 如何使用类型别名从模板化类中隐藏模板列表
- 如何检测类型类型别名?
- C++类型别名,其中值被替换
- 如何为流输出运算符提供重载<<模板'using'类型别名?
- 通过类型别名从构造函数转发模板推导
- C++中的严格别名规则和类型别名
- 使用其他模板类型参数作为要在函数签名中使用的类型别名声明
- 什么是C++中的类型别名?
- 如何在不违反类型别名规则的情况下解释消息负载?
- 在模板派生类中继承具有类型别名的构造函数
- 类型别名允许分配任意指针,尽管 int* 是必需的
- 使用类型别名,例如使用 A = int(int)
- 模板类函数指针类型别名
- 类型别名和类似类型
- 泛型类型别名,它们彼此不兼容
- 具有类型别名的循环依赖项
- 为什么模板引用类型不能用作模板类型别名参数?