C 中允许重复的 const 限定符,但 C++ 中不允许?
示例代码片段
const const const int x = 10;
int main()
{}
在 C 中编译,但在 C++ 中不编译。为什么用C编译?我认为这在 C 中也会失败。没关系。
C++ 标准的哪一部分禁止使用重复的 const,而 C 标准的哪一部分允许这样做?
Sample code snippet
const const const int x = 10;
int main()
{}
gets compiled in C but not in C++. Why does it get compiled in C? I thought this would fail in C as well. Never mind.
Which part of the C++ Standard forbids the use of duplicate const
and which part of the C standard allows this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
C99 §6.7.3/4:
是的,这是有效的 C99,并且您的发现是正确的。
C99 §6.7.3/4:
Yes, that is valid C99, and your discovery is correct.
从最新的 C++0x 草案来看,[dcl.type]:
From the last C++0x draft, [dcl.type]:
C++ 2003 在 7.1.5/1 中禁止它“...禁止冗余 cv 限定符,除非通过使用 typedef 或模板类型参数引入...”。
C++ 2003 prohibits it in 7.1.5/1 "... redundant cv-qualifiers are prohibited except when introduced through the use of typedefs or template type arguments ...".
C++0x 语法似乎允许这样做:
另外,< code>[decl.type.cv] 似乎允许它:
The C++0x grammar appears to allow it:
Also,
[decl.type.cv]
appears to allow it: