众所周知,int const
和const int
是“类型同义词”。
我之前告诉过某人,如果这是整个类型,它们是等效的(即如果typename
中没有更多的令牌)。
但是,现在我考虑一下,是否有一对词法分别包含int const
和const int
,它们 等效?
答案 0 :(得分:2)
不,我不这么认为,除非你添加一些其他限定符:
const int x;
volatile const int x;
可是:
volatile const int x;
volatile int const x;
const volatile int x;
const int volatile x;
int const volatile x;
int volatile const x;
都是等同的,但并非都是同样合理的。
答案 1 :(得分:1)
x
和y
在技术上是两种截然不同的类型,因为int
在位字段(int
!= signed int
中具有特殊含义它们)。
struct bitfield {
const int x : 1;
};
int const y = 0;
并非完全相关,但仍然很有趣。
答案 2 :(得分:1)
声明说明符的顺序无关紧要。这是合法的C ++ 11:
static long const unsigned inline long volatile int f() { return 0; }
答案 3 :(得分:0)
没有。两种表单可以出现的上下文是type-id
。没有上下文,其中两个type-id可以在没有分隔符的情况下顺序出现(通常为,
或;
)。因此,const
始终与type-id
相同int
。