类型别名和类似类型

时间:2019-10-07 11:03:33

标签: c++ c++11

cpp reference上,如果忽略指向同一类型的顶级cv限定词,则它们是相同的。在示例中有一个示例

int (* const *)(int *) and int (* volatile *)(int *) are similar; 

我想知道那些应该是相似的吗? AFAIK表示一个指向函数指针的指针,以简化它们可以将其重写为

 using XYZ = int(*)(int *);
 const XYZ *;     // A
 volatile XYZ *;  // B

在这种情况下,A和B指针是否指向不同的类型?

1 个答案:

答案 0 :(得分:2)

  

在cpp引用上,如果忽略指向同一类型的顶级cv限定词,则说两个指针是相同的

不完全是。它说:

  

非正式地,如果忽略顶级cv资格,则两种类型相似:

     
      
  • 它们是同一类型;或

  •   
  • 它们都是指针,并且指向的类型相似;或

  •   

请注意,相同相似不同。


const XYZ *;     // A
volatile XYZ *;  // B
     

在这种情况下,A和B指针是否指向不同的类型?

它们确实是不同的类型。但是它们是相似的。