【发布时间】:2014-11-09 19:28:25
【问题描述】:
如果您查看*declarator*s in §8/4 的语法,您会注意到noptr-declarator 可以写成(ptr-declarator),也就是说,它可以写成 (declarator-id),它验证标题中的声明。事实上,这段代码编译没有问题:
#include <iostream>
struct A{ int i;};
int (x) = 100;
A (a) = {2};
int main()
{
std::cout << x << '\n';
std::cout << a.i << '\n';
}
但是在声明中不涉及指针(指向数组或函数)时允许使用这些括号的目的是什么?
【问题讨论】:
-
大概是因为要禁止它们需要更复杂的语法。
-
这可能是一个解释。我没想到这个。
-
同样,
(42)是一个有效的表达式,即使括号是不必要的。
标签: c++ c++11 language-lawyer variable-declaration